Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b30954e authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4: Retry lease recovery if it failed during a synchronous operation.

parent 97db8f41
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -793,10 +793,17 @@ static int _nfs4_do_access(struct inode *inode, struct rpc_cred *cred, int openf
int nfs4_recover_expired_lease(struct nfs_server *server)
{
	struct nfs_client *clp = server->nfs_client;
	int ret;

	if (test_and_clear_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state))
	for (;;) {
		ret = nfs4_wait_clnt_recover(server->client, clp);
		if (ret != 0)
			return ret;
		if (!test_and_clear_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state))
			break;
		nfs4_schedule_state_recovery(clp);
	return nfs4_wait_clnt_recover(server->client, clp);
	}
	return 0;
}

/*