NFSv4.1/pnfs: Fix a close/delegreturn hang when return-on-close is set
[deliverable/linux.git] / fs / nfs / nfs4proc.c
index f4e5816a77b070f337d9b653660aaeeba61ddc27..bda7837dfe6b98720c6b299fd77ede10202aae5b 100644 (file)
@@ -2737,11 +2737,8 @@ static void nfs4_close_prepare(struct rpc_task *task, void *data)
 
        if (calldata->arg.fmode == 0) {
                task->tk_msg.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_CLOSE];
-               if (calldata->roc &&
-                   pnfs_roc_drain(inode, &calldata->roc_barrier, task)) {
-                       nfs_release_seqid(calldata->arg.seqid);
-                       goto out_wait;
-                   }
+               if (calldata->roc)
+                       pnfs_roc_get_barrier(inode, &calldata->roc_barrier);
        }
        calldata->arg.share_access =
                nfs4_map_atomic_open_share(NFS_SERVER(inode),
@@ -5289,9 +5286,8 @@ static void nfs4_delegreturn_prepare(struct rpc_task *task, void *data)
 
        d_data = (struct nfs4_delegreturndata *)data;
 
-       if (d_data->roc &&
-           pnfs_roc_drain(d_data->inode, &d_data->roc_barrier, task))
-               return;
+       if (d_data->roc)
+               pnfs_roc_get_barrier(d_data->inode, &d_data->roc_barrier);
 
        nfs4_setup_sequence(d_data->res.server,
                        &d_data->args.seq_args,
This page took 0.038926 seconds and 5 git commands to generate.