@@ -1162,7 +1162,7 @@ static int nfs4_call_sync_sequence(struct rpc_clnt *clnt,
11621162{
11631163 unsigned short task_flags = 0 ;
11641164
1165- if (server -> nfs_client -> cl_minorversion )
1165+ if (server -> caps & NFS_CAP_MOVEABLE )
11661166 task_flags = RPC_TASK_MOVEABLE ;
11671167 return nfs4_do_call_sync (clnt , server , msg , args , res , task_flags );
11681168}
@@ -2568,7 +2568,7 @@ static int nfs4_run_open_task(struct nfs4_opendata *data,
25682568 };
25692569 int status ;
25702570
2571- if (server -> nfs_client -> cl_minorversion )
2571+ if (nfs_server_capable ( dir , NFS_CAP_MOVEABLE ) )
25722572 task_setup_data .flags |= RPC_TASK_MOVEABLE ;
25732573
25742574 kref_get (& data -> kref );
@@ -3737,7 +3737,7 @@ int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait)
37373737 };
37383738 int status = - ENOMEM ;
37393739
3740- if (server -> nfs_client -> cl_minorversion )
3740+ if (nfs_server_capable ( state -> inode , NFS_CAP_MOVEABLE ) )
37413741 task_setup_data .flags |= RPC_TASK_MOVEABLE ;
37423742
37433743 nfs4_state_protect (server -> nfs_client , NFS_SP4_MACH_CRED_CLEANUP ,
@@ -4407,7 +4407,7 @@ static int _nfs4_proc_lookup(struct rpc_clnt *clnt, struct inode *dir,
44074407 };
44084408 unsigned short task_flags = 0 ;
44094409
4410- if (server -> nfs_client -> cl_minorversion )
4410+ if (nfs_server_capable ( dir , NFS_CAP_MOVEABLE ) )
44114411 task_flags = RPC_TASK_MOVEABLE ;
44124412
44134413 /* Is this is an attribute revalidation, subject to softreval? */
@@ -6639,10 +6639,13 @@ static int _nfs4_proc_delegreturn(struct inode *inode, const struct cred *cred,
66396639 .rpc_client = server -> client ,
66406640 .rpc_message = & msg ,
66416641 .callback_ops = & nfs4_delegreturn_ops ,
6642- .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT | RPC_TASK_MOVEABLE ,
6642+ .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT ,
66436643 };
66446644 int status = 0 ;
66456645
6646+ if (nfs_server_capable (inode , NFS_CAP_MOVEABLE ))
6647+ task_setup_data .flags |= RPC_TASK_MOVEABLE ;
6648+
66466649 data = kzalloc (sizeof (* data ), GFP_KERNEL );
66476650 if (data == NULL )
66486651 return - ENOMEM ;
@@ -6956,10 +6959,8 @@ static struct rpc_task *nfs4_do_unlck(struct file_lock *fl,
69566959 .workqueue = nfsiod_workqueue ,
69576960 .flags = RPC_TASK_ASYNC ,
69586961 };
6959- struct nfs_client * client =
6960- NFS_SERVER (lsp -> ls_state -> inode )-> nfs_client ;
69616962
6962- if (client -> cl_minorversion )
6963+ if (nfs_server_capable ( lsp -> ls_state -> inode , NFS_CAP_MOVEABLE ) )
69636964 task_setup_data .flags |= RPC_TASK_MOVEABLE ;
69646965
69656966 nfs4_state_protect (NFS_SERVER (lsp -> ls_state -> inode )-> nfs_client ,
@@ -7230,9 +7231,8 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
72307231 .flags = RPC_TASK_ASYNC | RPC_TASK_CRED_NOREF ,
72317232 };
72327233 int ret ;
7233- struct nfs_client * client = NFS_SERVER (state -> inode )-> nfs_client ;
72347234
7235- if (client -> cl_minorversion )
7235+ if (nfs_server_capable ( state -> inode , NFS_CAP_MOVEABLE ) )
72367236 task_setup_data .flags |= RPC_TASK_MOVEABLE ;
72377237
72387238 data = nfs4_alloc_lockdata (fl , nfs_file_open_context (fl -> fl_file ),
@@ -10467,7 +10467,8 @@ static const struct nfs4_minor_version_ops nfs_v4_1_minor_ops = {
1046710467 | NFS_CAP_POSIX_LOCK
1046810468 | NFS_CAP_STATEID_NFSV41
1046910469 | NFS_CAP_ATOMIC_OPEN_V1
10470- | NFS_CAP_LGOPEN ,
10470+ | NFS_CAP_LGOPEN
10471+ | NFS_CAP_MOVEABLE ,
1047110472 .init_client = nfs41_init_client ,
1047210473 .shutdown_client = nfs41_shutdown_client ,
1047310474 .match_stateid = nfs41_match_stateid ,
@@ -10502,7 +10503,8 @@ static const struct nfs4_minor_version_ops nfs_v4_2_minor_ops = {
1050210503 | NFS_CAP_LAYOUTSTATS
1050310504 | NFS_CAP_CLONE
1050410505 | NFS_CAP_LAYOUTERROR
10505- | NFS_CAP_READ_PLUS ,
10506+ | NFS_CAP_READ_PLUS
10507+ | NFS_CAP_MOVEABLE ,
1050610508 .init_client = nfs41_init_client ,
1050710509 .shutdown_client = nfs41_shutdown_client ,
1050810510 .match_stateid = nfs41_match_stateid ,
0 commit comments