Dave Wysochanski <dwyso...@redhat.com> wrote:

> 
> Handle failed return values of fscache_fallback_read_page() in
> switch statement.

After some discussion on IRC, the attached is probably better.  Returning 1
might result in 1 being returned through ->readpage(), which could be a
problem.

David
---
diff --git a/fs/nfs/fscache.c b/fs/nfs/fscache.c
index 5b0e78742444..68e266a37675 100644
--- a/fs/nfs/fscache.c
+++ b/fs/nfs/fscache.c
@@ -346,33 +346,18 @@ int __nfs_readpage_from_fscache(struct inode *inode, 
struct page *page)
 
        ret = fscache_fallback_read_page(nfs_i_fscache(inode), page);
        if (ret < 0) {
-               dfprintk(FSCACHE, "NFS:    readpage_from_fscache: "
-                        "fscache_fallback_read_page failed ret = %d\n", ret);
-               return ret;
-       }
-
-       switch (ret) {
-       case 0: /* Read completed synchronously */
-               dfprintk(FSCACHE,
-                        "NFS:    readpage_from_fscache: read successful\n");
-               nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_READ_OK);
-               SetPageUptodate(page);
-               return 0;
-
-       case -ENOBUFS: /* inode not in cache */
-       case -ENODATA: /* page not in cache */
                nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_READ_FAIL);
                dfprintk(FSCACHE,
-                        "NFS:    readpage_from_fscache %d\n", ret);
-               SetPageChecked(page);
-               return 1;
-
-       default:
-               dfprintk(FSCACHE, "NFS:    readpage_from_fscache %d\n", ret);
-               nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_READ_FAIL);
+                        "NFS:    readpage_from_fscache failed %d\n", ret);
                SetPageChecked(page);
+               return ret;
        }
-       return ret;
+
+       /* Read completed synchronously */
+       dfprintk(FSCACHE, "NFS:    readpage_from_fscache: read successful\n");
+       nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_READ_OK);
+       SetPageUptodate(page);
+       return 0;
 }
 
 /*

--
Linux-cachefs mailing list
Linux-cachefs@redhat.com
https://listman.redhat.com/mailman/listinfo/linux-cachefs

Reply via email to