aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/nfs4proc.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 2d45606a8085..ed6c8899806d 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -249,7 +249,25 @@ static int nfs4_handle_exception(const struct nfs_server *server, int errorcode,
249 ret = nfs4_wait_clnt_recover(clp); 249 ret = nfs4_wait_clnt_recover(clp);
250 if (ret == 0) 250 if (ret == 0)
251 exception->retry = 1; 251 exception->retry = 1;
252#if !defined(CONFIG_NFS_V4_1)
252 break; 253 break;
254#else /* !defined(CONFIG_NFS_V4_1) */
255 if (!nfs4_has_session(server->nfs_client))
256 break;
257 /* FALLTHROUGH */
258 case -NFS4ERR_BADSESSION:
259 case -NFS4ERR_BADSLOT:
260 case -NFS4ERR_BAD_HIGH_SLOT:
261 case -NFS4ERR_CONN_NOT_BOUND_TO_SESSION:
262 case -NFS4ERR_DEADSESSION:
263 case -NFS4ERR_SEQ_FALSE_RETRY:
264 case -NFS4ERR_SEQ_MISORDERED:
265 dprintk("%s ERROR: %d Reset session\n", __func__,
266 errorcode);
267 set_bit(NFS4CLNT_SESSION_SETUP, &clp->cl_state);
268 exception->retry = 1;
269 /* FALLTHROUGH */
270#endif /* !defined(CONFIG_NFS_V4_1) */
253 case -NFS4ERR_FILE_OPEN: 271 case -NFS4ERR_FILE_OPEN:
254 case -NFS4ERR_GRACE: 272 case -NFS4ERR_GRACE:
255 case -NFS4ERR_DELAY: 273 case -NFS4ERR_DELAY:
@@ -3241,6 +3259,20 @@ _nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
3241 rpc_wake_up_queued_task(&clp->cl_rpcwaitq, task); 3259 rpc_wake_up_queued_task(&clp->cl_rpcwaitq, task);
3242 task->tk_status = 0; 3260 task->tk_status = 0;
3243 return -EAGAIN; 3261 return -EAGAIN;
3262#if defined(CONFIG_NFS_V4_1)
3263 case -NFS4ERR_BADSESSION:
3264 case -NFS4ERR_BADSLOT:
3265 case -NFS4ERR_BAD_HIGH_SLOT:
3266 case -NFS4ERR_DEADSESSION:
3267 case -NFS4ERR_CONN_NOT_BOUND_TO_SESSION:
3268 case -NFS4ERR_SEQ_FALSE_RETRY:
3269 case -NFS4ERR_SEQ_MISORDERED:
3270 dprintk("%s ERROR %d, Reset session\n", __func__,
3271 task->tk_status);
3272 set_bit(NFS4CLNT_SESSION_SETUP, &clp->cl_state);
3273 task->tk_status = 0;
3274 return -EAGAIN;
3275#endif /* CONFIG_NFS_V4_1 */
3244 case -NFS4ERR_DELAY: 3276 case -NFS4ERR_DELAY:
3245 if (server) 3277 if (server)
3246 nfs_inc_server_stats(server, NFSIOS_DELAY); 3278 nfs_inc_server_stats(server, NFSIOS_DELAY);