@@ -1155,7 +1155,11 @@ static int nfs4_call_sync_sequence(struct rpc_clnt *clnt,
11551155 struct nfs4_sequence_args * args ,
11561156 struct nfs4_sequence_res * res )
11571157{
1158- return nfs4_do_call_sync (clnt , server , msg , args , res , 0 );
1158+ unsigned short task_flags = 0 ;
1159+
1160+ if (server -> nfs_client -> cl_minorversion )
1161+ task_flags = RPC_TASK_MOVEABLE ;
1162+ return nfs4_do_call_sync (clnt , server , msg , args , res , task_flags );
11591163}
11601164
11611165
@@ -2566,6 +2570,9 @@ static int nfs4_run_open_task(struct nfs4_opendata *data,
25662570 };
25672571 int status ;
25682572
2573+ if (server -> nfs_client -> cl_minorversion )
2574+ task_setup_data .flags |= RPC_TASK_MOVEABLE ;
2575+
25692576 kref_get (& data -> kref );
25702577 data -> rpc_done = false;
25712578 data -> rpc_status = 0 ;
@@ -3746,6 +3753,9 @@ int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait)
37463753 };
37473754 int status = - ENOMEM ;
37483755
3756+ if (server -> nfs_client -> cl_minorversion )
3757+ task_setup_data .flags |= RPC_TASK_MOVEABLE ;
3758+
37493759 nfs4_state_protect (server -> nfs_client , NFS_SP4_MACH_CRED_CLEANUP ,
37503760 & task_setup_data .rpc_client , & msg );
37513761
@@ -4185,6 +4195,9 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
41854195 };
41864196 unsigned short task_flags = 0 ;
41874197
4198+ if (nfs4_has_session (server -> nfs_client ))
4199+ task_flags = RPC_TASK_MOVEABLE ;
4200+
41884201 /* Is this is an attribute revalidation, subject to softreval? */
41894202 if (inode && (server -> flags & NFS_MOUNT_SOFTREVAL ))
41904203 task_flags |= RPC_TASK_TIMEOUT ;
@@ -4304,6 +4317,9 @@ static int _nfs4_proc_lookup(struct rpc_clnt *clnt, struct inode *dir,
43044317 };
43054318 unsigned short task_flags = 0 ;
43064319
4320+ if (server -> nfs_client -> cl_minorversion )
4321+ task_flags = RPC_TASK_MOVEABLE ;
4322+
43074323 /* Is this is an attribute revalidation, subject to softreval? */
43084324 if (nfs_lookup_is_soft_revalidate (dentry ))
43094325 task_flags |= RPC_TASK_TIMEOUT ;
@@ -6535,7 +6551,7 @@ static int _nfs4_proc_delegreturn(struct inode *inode, const struct cred *cred,
65356551 .rpc_client = server -> client ,
65366552 .rpc_message = & msg ,
65376553 .callback_ops = & nfs4_delegreturn_ops ,
6538- .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT ,
6554+ .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT | RPC_TASK_MOVEABLE ,
65396555 };
65406556 int status = 0 ;
65416557
@@ -6853,6 +6869,11 @@ static struct rpc_task *nfs4_do_unlck(struct file_lock *fl,
68536869 .workqueue = nfsiod_workqueue ,
68546870 .flags = RPC_TASK_ASYNC ,
68556871 };
6872+ struct nfs_client * client =
6873+ NFS_SERVER (lsp -> ls_state -> inode )-> nfs_client ;
6874+
6875+ if (client -> cl_minorversion )
6876+ task_setup_data .flags |= RPC_TASK_MOVEABLE ;
68566877
68576878 nfs4_state_protect (NFS_SERVER (lsp -> ls_state -> inode )-> nfs_client ,
68586879 NFS_SP4_MACH_CRED_CLEANUP , & task_setup_data .rpc_client , & msg );
@@ -7127,6 +7148,10 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
71277148 .flags = RPC_TASK_ASYNC | RPC_TASK_CRED_NOREF ,
71287149 };
71297150 int ret ;
7151+ struct nfs_client * client = NFS_SERVER (state -> inode )-> nfs_client ;
7152+
7153+ if (client -> cl_minorversion )
7154+ task_setup_data .flags |= RPC_TASK_MOVEABLE ;
71307155
71317156 dprintk ("%s: begin!\n" , __func__ );
71327157 data = nfs4_alloc_lockdata (fl , nfs_file_open_context (fl -> fl_file ),
@@ -9220,7 +9245,7 @@ static struct rpc_task *_nfs41_proc_sequence(struct nfs_client *clp,
92209245 .rpc_client = clp -> cl_rpcclient ,
92219246 .rpc_message = & msg ,
92229247 .callback_ops = & nfs41_sequence_ops ,
9223- .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT ,
9248+ .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT | RPC_TASK_MOVEABLE ,
92249249 };
92259250 struct rpc_task * ret ;
92269251
@@ -9542,7 +9567,8 @@ nfs4_proc_layoutget(struct nfs4_layoutget *lgp, long *timeout)
95429567 .rpc_message = & msg ,
95439568 .callback_ops = & nfs4_layoutget_call_ops ,
95449569 .callback_data = lgp ,
9545- .flags = RPC_TASK_ASYNC | RPC_TASK_CRED_NOREF ,
9570+ .flags = RPC_TASK_ASYNC | RPC_TASK_CRED_NOREF |
9571+ RPC_TASK_MOVEABLE ,
95469572 };
95479573 struct pnfs_layout_segment * lseg = NULL ;
95489574 struct nfs4_exception exception = {
@@ -9680,6 +9706,7 @@ int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp, bool sync)
96809706 .rpc_message = & msg ,
96819707 .callback_ops = & nfs4_layoutreturn_call_ops ,
96829708 .callback_data = lrp ,
9709+ .flags = RPC_TASK_MOVEABLE ,
96839710 };
96849711 int status = 0 ;
96859712
@@ -9834,6 +9861,7 @@ nfs4_proc_layoutcommit(struct nfs4_layoutcommit_data *data, bool sync)
98349861 .rpc_message = & msg ,
98359862 .callback_ops = & nfs4_layoutcommit_ops ,
98369863 .callback_data = data ,
9864+ .flags = RPC_TASK_MOVEABLE ,
98379865 };
98389866 struct rpc_task * task ;
98399867 int status = 0 ;
@@ -10161,7 +10189,7 @@ static int nfs41_free_stateid(struct nfs_server *server,
1016110189 .rpc_client = server -> client ,
1016210190 .rpc_message = & msg ,
1016310191 .callback_ops = & nfs41_free_stateid_ops ,
10164- .flags = RPC_TASK_ASYNC ,
10192+ .flags = RPC_TASK_ASYNC | RPC_TASK_MOVEABLE ,
1016510193 };
1016610194 struct nfs_free_stateid_data * data ;
1016710195 struct rpc_task * task ;
0 commit comments