NFSv4: Also ask for attributes when downgrading to a READ-only state
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 19 Dec 2016 16:36:41 +0000 (11:36 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 19 Dec 2016 22:29:58 +0000 (17:29 -0500)
If we're downgrading from a READ+WRITE mode to a READ-only mode, then
ask for cache consistency attributes so that we avoid the revalidation
in nfs_close_context()

Fixes: 3947b74d0f9d ("NFSv4: Don't request a GETATTR on open_downgrade.")
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs4proc.c

index 0d9fa18aa2431a7105bfd2c29d64f330bafeac1e..872ff6756723b9e1a54b7e55737cc276542b8197 100644 (file)
@@ -3200,9 +3200,10 @@ static void nfs4_close_prepare(struct rpc_task *task, void *data)
                goto out_wait;
        }
 
-       if (calldata->arg.fmode == 0) {
+       if (calldata->arg.fmode == 0)
                task->tk_msg.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_CLOSE];
 
+       if (calldata->arg.fmode == 0 || calldata->arg.fmode == FMODE_READ) {
                /* Close-to-open cache consistency revalidation */
                if (!nfs4_have_delegation(inode, FMODE_READ))
                        calldata->arg.bitmask = NFS_SERVER(inode)->cache_consistency_bitmask;