Cache bypass: adjust read size for non-contiguous readpages
authorMarc Dionne <marc.c.dionne@gmail.com>
Sun, 7 Nov 2010 18:35:36 +0000 (13:35 -0500)
committerDerrick Brashear <shadow@dementia.org>
Mon, 8 Nov 2010 19:18:53 +0000 (11:18 -0800)
The bypass code's readpages does deal with a non-contiguous list
of pages, but it doesn't adjust the size of the read it requests
from the background daemon accordingly.  As a result we'll ask the
server for pages we were not asked to read.

Change-Id: I5468a4a68f4f415961298144f5bb581faeda540a
Reviewed-on: http://gerrit.openafs.org/3282
Reviewed-by: Matt Benjamin <matt@linuxbox.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/afs/LINUX/osi_vnodeops.c

index e16092f..7489529 100644 (file)
@@ -1758,7 +1758,8 @@ afs_linux_bypass_readpages(struct file *fp, struct address_space *mapping,
             page_cache_release(pp);
            iovecp[page_ix].iov_base = (void *) 0;
            base_index++;
-            continue;
+           ancr->length -= PAGE_SIZE;
+           continue;
         }
         base_index++;
         if(code) {