Linux: Fix pagevec use in cache-bypass
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Wed, 30 Jun 2010 07:29:28 +0000 (08:29 +0100)
committerDerrick Brashear <shadow@dementia.org>
Fri, 2 Jul 2010 04:11:52 +0000 (21:11 -0700)
Cache-bypass was still using the old style pagevec manipulation
functions, and so won't build on newer kernels. Update it to use the
same pagevec functions as the generic readpages code.

FIXES 127505

Change-Id: I9d8acaf3165bbdf24068bd9145a2369cd0c87e4d
Reviewed-on: http://gerrit.openafs.org/2298
Reviewed-by: Matt Benjamin <matt@linuxbox.com>
Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/afs/LINUX/osi_vnodeops.c

index 324820b..b640693 100644 (file)
@@ -1776,14 +1776,15 @@ afs_linux_bypass_readpages(struct file *fp, struct address_space *mapping,
 
            /* and put it on the LRU cache */
            if (!pagevec_add(&lrupv, pp))
-               __pagevec_lru_add(&lrupv);
+               __pagevec_lru_add_file(&lrupv);
         }
     }
 
     /* If there were useful pages in the page list, make sure all pages
      * are in the LRU cache, then schedule the read */
     if(page_count) {
-        pagevec_lru_add(&lrupv);
+       if (pagevec_count(&lrupv))
+           __pagevec_lru_add_file(&lrupv);
        credp = crref();
         code = afs_ReadNoCache(avc, ancr, credp);
        crfree(credp);