NFS: Clean up nfs_init_client()
authorAnna Schumaker <Anna.Schumaker@Netapp.com>
Fri, 7 Apr 2017 18:15:05 +0000 (14:15 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 20 Apr 2017 17:39:33 +0000 (13:39 -0400)
We always call nfs_mark_client_ready() even if nfs_create_rpc_client()
returns an error, so we can rearrange nfs_init_client() to mark the
client ready from a single place.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/client.c

index 390ada8741bcbfd2e4aaecb3f759ec0707003674..675142189181b31b98bd173a2df555ecea6b3cdb 100644 (file)
@@ -624,27 +624,21 @@ struct nfs_client *nfs_init_client(struct nfs_client *clp,
 {
        int error;
 
-       if (clp->cl_cons_state == NFS_CS_READY) {
-               /* the client is already initialised */
-               dprintk("<-- nfs_init_client() = 0 [already %p]\n", clp);
+       /* the client is already initialised */
+       if (clp->cl_cons_state == NFS_CS_READY)
                return clp;
-       }
 
        /*
         * Create a client RPC handle for doing FSSTAT with UNIX auth only
         * - RFC 2623, sec 2.3.2
         */
        error = nfs_create_rpc_client(clp, cl_init, RPC_AUTH_UNIX);
-       if (error < 0)
-               goto error;
-       nfs_mark_client_ready(clp, NFS_CS_READY);
+       nfs_mark_client_ready(clp, error == 0 ? NFS_CS_READY : error);
+       if (error < 0) {
+               nfs_put_client(clp);
+               clp = ERR_PTR(error);
+       }
        return clp;
-
-error:
-       nfs_mark_client_ready(clp, error);
-       nfs_put_client(clp);
-       dprintk("<-- nfs_init_client() = xerror %d\n", error);
-       return ERR_PTR(error);
 }
 EXPORT_SYMBOL_GPL(nfs_init_client);