|
@@ -236,8 +236,6 @@ static struct rpc_clnt *rpc_get_client_for_event(struct net *net, int event)
|
|
|
continue;
|
|
|
if (rpc_clnt_skip_event(clnt, event))
|
|
|
continue;
|
|
|
- if (atomic_inc_not_zero(&clnt->cl_count) == 0)
|
|
|
- continue;
|
|
|
spin_unlock(&sn->rpc_client_lock);
|
|
|
return clnt;
|
|
|
}
|
|
@@ -254,7 +252,6 @@ static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event,
|
|
|
|
|
|
while ((clnt = rpc_get_client_for_event(sb->s_fs_info, event))) {
|
|
|
error = __rpc_pipefs_event(clnt, event, sb);
|
|
|
- rpc_release_client(clnt);
|
|
|
if (error)
|
|
|
break;
|
|
|
}
|
|
@@ -641,8 +638,8 @@ rpc_free_client(struct rpc_clnt *clnt)
|
|
|
rcu_dereference(clnt->cl_xprt)->servername);
|
|
|
if (clnt->cl_parent != clnt)
|
|
|
rpc_release_client(clnt->cl_parent);
|
|
|
- rpc_unregister_client(clnt);
|
|
|
rpc_clnt_remove_pipedir(clnt);
|
|
|
+ rpc_unregister_client(clnt);
|
|
|
rpc_free_iostats(clnt->cl_metrics);
|
|
|
kfree(clnt->cl_principal);
|
|
|
clnt->cl_metrics = NULL;
|