From patchwork Thu Feb 3 22:09:59 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Landley X-Patchwork-Id: 530691 X-Patchwork-Delegate: Trond.Myklebust@netapp.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p13MAFSx028291 for ; Thu, 3 Feb 2011 22:10:15 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754080Ab1BCWKE (ORCPT ); Thu, 3 Feb 2011 17:10:04 -0500 Received: from mx2.parallels.com ([64.131.90.16]:57211 "EHLO mx2.parallels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752420Ab1BCWKC (ORCPT ); Thu, 3 Feb 2011 17:10:02 -0500 Received: from [96.31.168.206] (helo=mail.parallels.com) by mx2.parallels.com with esmtps (TLSv1:AES128-SHA:128) (Exim 4.72) (envelope-from ) id 1Pl7NJ-00022o-TI for linux-nfs@vger.kernel.org; Thu, 03 Feb 2011 17:10:02 -0500 Received: from [192.168.2.108] (24.27.19.110) by mail.parallels.com (10.255.249.32) with Microsoft SMTP Server (TLS) id 14.1.218.12; Thu, 3 Feb 2011 14:10:00 -0800 Message-ID: <4D4B27B7.80604@parallels.com> Date: Thu, 3 Feb 2011 16:09:59 -0600 From: Rob Landley User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101208 Thunderbird/3.1.7 MIME-Version: 1.0 To: Subject: [PATCH] Cleanup: move some NFSv4-only code/data under CONFIG_NFS_V4. X-Originating-IP: [24.27.19.110] Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 03 Feb 2011 22:10:16 +0000 (UTC) diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 192f2f8..fa3685d 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c @@ -383,25 +383,6 @@ static int nfs_sockaddr_cmp_ip4(const struct sockaddr *sa1, /* * Test if two socket addresses represent the same actual socket, - * by comparing (only) relevant fields, excluding the port number. - */ -static int nfs_sockaddr_match_ipaddr(const struct sockaddr *sa1, - const struct sockaddr *sa2) -{ - if (sa1->sa_family != sa2->sa_family) - return 0; - - switch (sa1->sa_family) { - case AF_INET: - return nfs_sockaddr_match_ipaddr4(sa1, sa2); - case AF_INET6: - return nfs_sockaddr_match_ipaddr6(sa1, sa2); - } - return 0; -} - -/* - * Test if two socket addresses represent the same actual socket, * by comparing (only) relevant fields, including the port number. */ static int nfs_sockaddr_cmp(const struct sockaddr *sa1, @@ -419,30 +400,6 @@ static int nfs_sockaddr_cmp(const struct sockaddr *sa1, return 0; } -/* Common match routine for v4.0 and v4.1 callback services */ -bool -nfs4_cb_match_client(const struct sockaddr *addr, struct nfs_client *clp, - u32 minorversion) -{ - struct sockaddr *clap = (struct sockaddr *)&clp->cl_addr; - - /* Don't match clients that failed to initialise */ - if (!(clp->cl_cons_state == NFS_CS_READY || - clp->cl_cons_state == NFS_CS_SESSION_INITING)) - return false; - - /* Match the version and minorversion */ - if (clp->rpc_ops->version != 4 || - clp->cl_minorversion != minorversion) - return false; - - /* Match only the IP address, not the port number */ - if (!nfs_sockaddr_match_ipaddr(addr, clap)) - return false; - - return true; -} - /* * Find an nfs_client on the list that matches the initialisation data * that is supplied. @@ -464,9 +421,11 @@ static struct nfs_client *nfs_match_client(const struct nfs_client_initdata *dat if (clp->cl_proto != data->proto) continue; +#ifdef CONFIG_NFS_V4 /* Match nfsv4 minorversion */ if (clp->cl_minorversion != data->minorversion) continue; +#endif /* Match the full socket address */ if (!nfs_sockaddr_cmp(sap, clap)) continue; @@ -1156,6 +1115,49 @@ error: #ifdef CONFIG_NFS_V4 /* + * Test if two socket addresses represent the same actual socket, + * by comparing (only) relevant fields, excluding the port number. + */ +static int nfs_sockaddr_match_ipaddr(const struct sockaddr *sa1, + const struct sockaddr *sa2) +{ + if (sa1->sa_family != sa2->sa_family) + return 0; + + switch (sa1->sa_family) { + case AF_INET: + return nfs_sockaddr_match_ipaddr4(sa1, sa2); + case AF_INET6: + return nfs_sockaddr_match_ipaddr6(sa1, sa2); + } + return 0; +} + +/* Common match routine for v4.0 and v4.1 callback services */ +bool +nfs4_cb_match_client(const struct sockaddr *addr, struct nfs_client *clp, + u32 minorversion) +{ + struct sockaddr *clap = (struct sockaddr *)&clp->cl_addr; + + /* Don't match clients that failed to initialise */ + if (!(clp->cl_cons_state == NFS_CS_READY || + clp->cl_cons_state == NFS_CS_SESSION_INITING)) + return false; + + /* Match the version and minorversion */ + if (clp->rpc_ops->version != 4 || + clp->cl_minorversion != minorversion) + return false; + + /* Match only the IP address, not the port number */ + if (!nfs_sockaddr_match_ipaddr(addr, clap)) + return false; + + return true; +} + +/* * NFSv4.0 callback thread helper * * Find a client by IP address, protocol version, and minorversion diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index b197563..38263f0 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h @@ -23,6 +23,7 @@ struct nfs4_minor_version_ops; struct nfs_client { atomic_t cl_count; int cl_cons_state; /* current construction state (-ve: init error) */ + int cl_proto; /* Network transport protocol */ #define NFS_CS_READY 0 /* ready to be used */ #define NFS_CS_INITING 1 /* busy initialising */ #define NFS_CS_SESSION_INITING 2 /* busy initialising session */ @@ -38,9 +39,7 @@ struct nfs_client { struct rpc_clnt * cl_rpcclient; const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ - int cl_proto; /* Network transport protocol */ - u32 cl_minorversion;/* NFSv4 minorversion */ struct rpc_cred *cl_machine_cred; #ifdef CONFIG_NFS_V4 @@ -67,6 +66,7 @@ struct nfs_client { char cl_ipaddr[48]; unsigned char cl_id_uniquifier; u32 cl_cb_ident; /* v4.0 callback identifier */ + u32 cl_minorversion;/* NFSv4 minorversion */ const struct nfs4_minor_version_ops *cl_mvops; #endif /* CONFIG_NFS_V4 */