NFS: fix nfs_fetch_iversion()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 24 Mar 2021 19:32:21 +0000 (15:32 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 5 Apr 2021 13:04:21 +0000 (09:04 -0400)
The change attribute is always set by all NFS client versions so get rid
of the open-coded version.

Fixes: 3cc55f4434b4 ("nfs: use change attribute for NFS re-exports")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/export.c

index f2b34cf..b347e3c 100644 (file)
@@ -171,17 +171,10 @@ static u64 nfs_fetch_iversion(struct inode *inode)
 {
        struct nfs_server *server = NFS_SERVER(inode);
 
-       /* Is this the right call?: */
-       nfs_revalidate_inode(server, inode);
-       /*
-        * Also, note we're ignoring any returned error.  That seems to be
-        * the practice for cache consistency information elsewhere in
-        * the server, but I'm not sure why.
-        */
-       if (server->nfs_client->rpc_ops->version >= 4)
-               return inode_peek_iversion_raw(inode);
-       else
-               return time_to_chattr(&inode->i_ctime);
+       if (nfs_check_cache_invalid(inode, NFS_INO_INVALID_CHANGE |
+                                                  NFS_INO_REVAL_PAGECACHE))
+               __nfs_revalidate_inode(server, inode);
+       return inode_peek_iversion_raw(inode);
 }
 
 const struct export_operations nfs_export_ops = {