|
@@ -482,6 +482,16 @@ int nfs40_walk_client_list(struct nfs_client *new,
|
|
|
|
|
|
spin_lock(&nn->nfs_client_lock);
|
|
|
list_for_each_entry(pos, &nn->nfs_client_list, cl_share_link) {
|
|
|
+
|
|
|
+ if (pos->rpc_ops != new->rpc_ops)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (pos->cl_proto != new->cl_proto)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (pos->cl_minorversion != new->cl_minorversion)
|
|
|
+ continue;
|
|
|
+
|
|
|
/* If "pos" isn't marked ready, we can't trust the
|
|
|
* remaining fields in "pos" */
|
|
|
if (pos->cl_cons_state > NFS_CS_READY) {
|
|
@@ -501,15 +511,6 @@ int nfs40_walk_client_list(struct nfs_client *new,
|
|
|
if (pos->cl_cons_state != NFS_CS_READY)
|
|
|
continue;
|
|
|
|
|
|
- if (pos->rpc_ops != new->rpc_ops)
|
|
|
- continue;
|
|
|
-
|
|
|
- if (pos->cl_proto != new->cl_proto)
|
|
|
- continue;
|
|
|
-
|
|
|
- if (pos->cl_minorversion != new->cl_minorversion)
|
|
|
- continue;
|
|
|
-
|
|
|
if (pos->cl_clientid != new->cl_clientid)
|
|
|
continue;
|
|
|
|
|
@@ -622,6 +623,16 @@ int nfs41_walk_client_list(struct nfs_client *new,
|
|
|
|
|
|
spin_lock(&nn->nfs_client_lock);
|
|
|
list_for_each_entry(pos, &nn->nfs_client_list, cl_share_link) {
|
|
|
+
|
|
|
+ if (pos->rpc_ops != new->rpc_ops)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (pos->cl_proto != new->cl_proto)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (pos->cl_minorversion != new->cl_minorversion)
|
|
|
+ continue;
|
|
|
+
|
|
|
/* If "pos" isn't marked ready, we can't trust the
|
|
|
* remaining fields in "pos", especially the client
|
|
|
* ID and serverowner fields. Wait for CREATE_SESSION
|
|
@@ -647,15 +658,6 @@ int nfs41_walk_client_list(struct nfs_client *new,
|
|
|
if (pos->cl_cons_state != NFS_CS_READY)
|
|
|
continue;
|
|
|
|
|
|
- if (pos->rpc_ops != new->rpc_ops)
|
|
|
- continue;
|
|
|
-
|
|
|
- if (pos->cl_proto != new->cl_proto)
|
|
|
- continue;
|
|
|
-
|
|
|
- if (pos->cl_minorversion != new->cl_minorversion)
|
|
|
- continue;
|
|
|
-
|
|
|
if (!nfs4_match_clientids(pos, new))
|
|
|
continue;
|
|
|
|