Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9289e7f91add1c09c3ec8571a2080f7507730b8d
Commit:     9289e7f91add1c09c3ec8571a2080f7507730b8d
Parent:     52c4044d00fe703eb3fb18e0d8dfd1c196eb28be
Author:     Chuck Lever <[EMAIL PROTECTED]>
AuthorDate: Fri Jan 11 17:09:52 2008 -0500
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 02:06:07 2008 -0500

    NFS: Invoke nlmclnt_init during NFS mount processing
    
    Cache an appropriate nlm_host structure in the NFS client's mount point
    metadata for later use.
    
    Note that there is no need to set NFS_MOUNT_NONLM in the error case -- if
    nfs_start_lockd() returns a non-zero value, its callers ensure that the
    mount request fails outright.
    
    Signed-off-by: Chuck Lever <[EMAIL PROTECTED]>
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
---
 fs/nfs/client.c           |   32 +++++++++++++++++++-------------
 include/linux/nfs_fs_sb.h |    2 ++
 2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 18fcb05..0b3ce86 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -458,7 +458,7 @@ static int nfs_create_rpc_client(struct nfs_client *clp,
 static void nfs_destroy_server(struct nfs_server *server)
 {
        if (!(server->flags & NFS_MOUNT_NONLM))
-               lockd_down();   /* release rpc.lockd */
+               nlmclnt_done(server->nlm_host);
 }
 
 /*
@@ -466,20 +466,26 @@ static void nfs_destroy_server(struct nfs_server *server)
  */
 static int nfs_start_lockd(struct nfs_server *server)
 {
-       int error = 0;
+       struct nlm_host *host;
+       struct nfs_client *clp = server->nfs_client;
+       u32 nfs_version = clp->rpc_ops->version;
+       unsigned short protocol = server->flags & NFS_MOUNT_TCP ?
+                                               IPPROTO_TCP : IPPROTO_UDP;
 
-       if (server->nfs_client->rpc_ops->version > 3)
-               goto out;
+       if (nfs_version > 3)
+               return 0;
        if (server->flags & NFS_MOUNT_NONLM)
-               goto out;
-       error = lockd_up((server->flags & NFS_MOUNT_TCP) ?
-                       IPPROTO_TCP : IPPROTO_UDP);
-       if (error < 0)
-               server->flags |= NFS_MOUNT_NONLM;
-       else
-               server->destroy = nfs_destroy_server;
-out:
-       return error;
+               return 0;
+
+       host = nlmclnt_init(clp->cl_hostname,
+                           (struct sockaddr *)&clp->cl_addr,
+                           clp->cl_addrlen, protocol, nfs_version);
+       if (IS_ERR(host))
+               return PTR_ERR(host);
+
+       server->nlm_host = host;
+       server->destroy = nfs_destroy_server;
+       return 0;
 }
 
 /*
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h
index b5ba5f7..3423c67 100644
--- a/include/linux/nfs_fs_sb.h
+++ b/include/linux/nfs_fs_sb.h
@@ -8,6 +8,7 @@
 #include <asm/atomic.h>
 
 struct nfs_iostats;
+struct nlm_host;
 
 /*
  * The nfs_client identifies our client state to the server.
@@ -80,6 +81,7 @@ struct nfs_server {
        struct list_head        master_link;    /* link in master servers list 
*/
        struct rpc_clnt *       client;         /* RPC client handle */
        struct rpc_clnt *       client_acl;     /* ACL RPC client handle */
+       struct nlm_host         *nlm_host;      /* NLM client handle */
        struct nfs_iostats *    io_stats;       /* I/O statistics */
        struct backing_dev_info backing_dev_info;
        atomic_long_t           writeback;      /* number of writeback pages */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to