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