NLM: Introduce an arguments structure for nlmclnt_init()
Chuck Lever [Tue, 15 Jan 2008 21:04:20 +0000 (16:04 -0500)]
Clean up: pass 5 arguments to nlmclnt_init() in a structure similar to the
new nfs_client_initdata structure.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>

fs/lockd/clntlock.c
fs/nfs/client.c
include/linux/lockd/bind.h

index 9a8f4f4..0b45fd3 100644 (file)
@@ -43,31 +43,25 @@ static LIST_HEAD(nlm_blocked);
 
 /**
  * nlmclnt_init - Set up per-NFS mount point lockd data structures
- * @server_name: server's hostname
- * @server_address: server's network address
- * @server_addrlen: length of server's address
- * @protocol: transport protocol lockd should use
- * @nfs_version: NFS protocol version for this mount point
+ * @nlm_init: pointer to arguments structure
  *
  * Returns pointer to an appropriate nlm_host struct,
  * or an ERR_PTR value.
  */
-struct nlm_host *nlmclnt_init(const char *server_name,
-                             const struct sockaddr *server_address,
-                             size_t server_addrlen,
-                             unsigned short protocol, u32 nfs_version)
+struct nlm_host *nlmclnt_init(const struct nlmclnt_initdata *nlm_init)
 {
        struct nlm_host *host;
-       u32 nlm_version = (nfs_version == 2) ? 1 : 4;
+       u32 nlm_version = (nlm_init->nfs_version == 2) ? 1 : 4;
        int status;
 
-       status = lockd_up(protocol);
+       status = lockd_up(nlm_init->protocol);
        if (status < 0)
                return ERR_PTR(status);
 
-       host = nlmclnt_lookup_host((struct sockaddr_in *)server_address,
-                                  protocol, nlm_version,
-                                  server_name, strlen(server_name));
+       host = nlmclnt_lookup_host((struct sockaddr_in *)nlm_init->address,
+                                  nlm_init->protocol, nlm_version,
+                                  nlm_init->hostname,
+                                  strlen(nlm_init->hostname));
        if (host == NULL) {
                lockd_down();
                return ERR_PTR(-ENOLCK);
index 0b3ce86..7a15832 100644 (file)
@@ -468,18 +468,21 @@ static int nfs_start_lockd(struct nfs_server *server)
 {
        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;
+       struct nlmclnt_initdata nlm_init = {
+               .hostname       = clp->cl_hostname,
+               .address        = (struct sockaddr *)&clp->cl_addr,
+               .addrlen        = clp->cl_addrlen,
+               .protocol       = server->flags & NFS_MOUNT_TCP ?
+                                               IPPROTO_TCP : IPPROTO_UDP,
+               .nfs_version    = clp->rpc_ops->version,
+       };
 
-       if (nfs_version > 3)
+       if (nlm_init.nfs_version > 3)
                return 0;
        if (server->flags & NFS_MOUNT_NONLM)
                return 0;
 
-       host = nlmclnt_init(clp->cl_hostname,
-                           (struct sockaddr *)&clp->cl_addr,
-                           clp->cl_addrlen, protocol, nfs_version);
+       host = nlmclnt_init(&nlm_init);
        if (IS_ERR(host))
                return PTR_ERR(host);
 
index 7336807..3d25bcd 100644 (file)
@@ -33,13 +33,22 @@ struct nlmsvc_binding {
 extern struct nlmsvc_binding * nlmsvc_ops;
 
 /*
+ * Similar to nfs_client_initdata, but without the NFS-specific
+ * rpc_ops field.
+ */
+struct nlmclnt_initdata {
+       const char              *hostname;
+       const struct sockaddr   *address;
+       size_t                  addrlen;
+       unsigned short          protocol;
+       u32                     nfs_version;
+};
+
+/*
  * Functions exported by the lockd module
  */
-extern struct nlm_host *nlmclnt_init(const char *server_name,
-                                       const struct sockaddr *server_address,
-                                       size_t server_addrlen,
-                                       unsigned short protocol,
-                                       u32 nfs_version);
+
+extern struct nlm_host *nlmclnt_init(const struct nlmclnt_initdata *nlm_init);
 extern void    nlmclnt_done(struct nlm_host *host);
 
 extern int     nlmclnt_proc(struct nlm_host *host, int cmd,