NFS: In nfs_readpage() only increment NFSIOS_READPAGES when read succeeds
authorDave Wysochanski <dwysocha@redhat.com>
Thu, 28 Jan 2021 14:55:00 +0000 (09:55 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 1 Feb 2021 18:32:48 +0000 (13:32 -0500)
There is a small inconsistency with nfs_readpage() vs nfs_readpages() with
regards to NFSIOS_READPAGES.  In readpage we unconditionally increment
NFSIOS_READPAGES at the top, which means even if the read fails.  In
readpages, we increment NFSIOS_READPAGES at the bottom based on how
many pages were successfully read.  Change readpage to be consistent with
readpages and so NFSIOS_READPAGES only reflects successful, non-fscache
reads.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/read.c

index dd92156..464077d 100644 (file)
@@ -319,7 +319,6 @@ int nfs_readpage(struct file *file, struct page *page)
        dprintk("NFS: nfs_readpage (%p %ld@%lu)\n",
                page, PAGE_SIZE, page_index(page));
        nfs_inc_stats(inode, NFSIOS_VFSREADPAGE);
-       nfs_add_stats(inode, NFSIOS_READPAGES, 1);
 
        /*
         * Try to flush any pending writes to the file..
@@ -359,6 +358,7 @@ int nfs_readpage(struct file *file, struct page *page)
                if (!PageUptodate(page) && !ret)
                        ret = xchg(&ctx->error, 0);
        }
+       nfs_add_stats(inode, NFSIOS_READPAGES, 1);
 out:
        put_nfs_open_context(ctx);
        return ret;