]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux: fix reading files larger than the chunk size
authorMarc Dionne <marc.c.dionne@gmail.com>
Sun, 15 May 2011 00:57:12 +0000 (20:57 -0400)
committerDerrick Brashear <shadow@dementia.org>
Tue, 17 May 2011 14:46:02 +0000 (07:46 -0700)
Commit 2571b6285d5da8ef62ab38c3a938258ddd7bac4e fixed an issue with
the use of tmpfs as a disk cache and ftruncate() on files in AFS.
But it introduced a problem reading larger files as reported in
RT ticket 129880.

What should be compared against the current cache file size is the
offset into the current chunk, not the overall offset for the whole
file.

FIXES: 129880

Reviewed-on: http://gerrit.openafs.org/4656
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: Russ Allbery <rra@stanford.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 8ee33373c1ef24572476d8189a3f6f7505bfc83a)

Change-Id: I0349d744a9e16b6448a621fe6f4078b1eb1fa9d2
Reviewed-on: http://gerrit.openafs.org/4664
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/LINUX/osi_vnodeops.c

index 45e0a356a340046d1bbd20173c84c89d1fa724e6..7c7705ec0f39c1a382e37c926c31cab02fc5868f 100644 (file)
@@ -1427,7 +1427,7 @@ afs_linux_read_cache(struct file *cachefp, struct page *page,
 
     /* If we're trying to read a page that's past the end of the disk
      * cache file, then just return a zeroed page */
-    if (offset >= i_size_read(cacheinode)) {
+    if (AFS_CHUNKOFFSET(offset) >= i_size_read(cacheinode)) {
        zero_user_segment(page, 0, PAGE_CACHE_SIZE);
        SetPageUptodate(page);
        if (task)