|
@@ -193,8 +193,10 @@ static void put_client_renew(struct nfs4_client *clp)
|
|
|
{
|
|
{
|
|
|
struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
|
|
struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
|
|
|
|
|
|
|
|
- spin_lock(&nn->client_lock);
|
|
|
|
|
- put_client_renew_locked(clp);
|
|
|
|
|
|
|
+ if (!atomic_dec_and_lock(&clp->cl_refcount, &nn->client_lock))
|
|
|
|
|
+ return;
|
|
|
|
|
+ if (!is_client_expired(clp))
|
|
|
|
|
+ renew_client_locked(clp);
|
|
|
spin_unlock(&nn->client_lock);
|
|
spin_unlock(&nn->client_lock);
|
|
|
}
|
|
}
|
|
|
|
|
|