diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/nfs/nfs4proc.c | 6 | ||||
| -rw-r--r-- | fs/nfs/nfs4state.c | 4 | 
2 files changed, 7 insertions, 3 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index bdf3d07ce974..264ddb16255f 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -3797,7 +3797,7 @@ static int nfs4_proc_async_renew(struct nfs_client *clp, struct rpc_cred *cred,  		return -ENOMEM;  	data->client = clp;  	data->timestamp = jiffies; -	return rpc_call_async(clp->cl_rpcclient, &msg, RPC_TASK_SOFT, +	return rpc_call_async(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT,  			&nfs4_renew_ops, data);  } @@ -3811,7 +3811,7 @@ static int nfs4_proc_renew(struct nfs_client *clp, struct rpc_cred *cred)  	unsigned long now = jiffies;  	int status; -	status = rpc_call_sync(clp->cl_rpcclient, &msg, 0); +	status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT);  	if (status < 0)  		return status;  	do_renew_lease(clp, now); @@ -5959,7 +5959,7 @@ static struct rpc_task *_nfs41_proc_sequence(struct nfs_client *clp,  		.rpc_client = clp->cl_rpcclient,  		.rpc_message = &msg,  		.callback_ops = &nfs41_sequence_ops, -		.flags = RPC_TASK_ASYNC | RPC_TASK_SOFT, +		.flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT,  	};  	if (!atomic_inc_not_zero(&clp->cl_count)) diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index b924bdd69494..1eb17285c99a 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -1739,6 +1739,10 @@ static int nfs4_check_lease(struct nfs_client *clp)  	}  	status = ops->renew_lease(clp, cred);  	put_rpccred(cred); +	if (status == -ETIMEDOUT) { +		set_bit(NFS4CLNT_CHECK_LEASE, &clp->cl_state); +		return 0; +	}  out:  	return nfs4_recovery_handle_error(clp, status);  }  | 
