On Wed, Jul 16, 2003 at 08:01:19PM +0200, Marco Gerards wrote:
> Ok. The old code didn't work for clusters > 4096 because the call to
> find_cluster will be split up because the pager reads the cluster in
> two operations.
>
> The cluster in a 8096 byte file will be read like this :
> (first pagefault) offset: 0
> (second pagefault) offset: 4096
>
> 4096(offset) + 8096(clustersize) > allocsize (8096)
>
> The test will fault and a EIO will be the result.
I see. So what do you think of this one:
2003-07-17 Marcus Brinkmann <[EMAIL PROTECTED]>
* pager.c (find_cluster): Round to cluster size rather than adding
cluster size.
Index: pager.c
===================================================================
RCS file: /cvsroot/hurd/hurd/fatfs/pager.c,v
retrieving revision 1.1
diff -u -p -r1.1 pager.c
--- pager.c 3 Dec 2002 20:52:59 -0000 1.1
+++ pager.c 17 Jul 2003 10:37:53 -0000
@@ -106,7 +106,7 @@ find_cluster (struct node *node, vm_offs
rwlock_reader_lock (*lock);
}
- if (offset + bytes_per_cluster > node->allocsize)
+ if (round_cluster (offset) > node->allocsize)
return EIO;
err = fat_getcluster (node, offset >> log2_bytes_per_cluster, 0, cluster);
_______________________________________________
Bug-hurd mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-hurd