From: Steve Dickson <SteveD@redhat.com>
To: "J. Bruce Fields" <bfields@redhat.com>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>,
Linux NFS Mailing list <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client
Date: Fri, 22 Feb 2013 11:38:25 -0500 [thread overview]
Message-ID: <51279F01.2020000@RedHat.com> (raw)
In-Reply-To: <20130222151339.GA10157@pad.fieldses.org>
On 22/02/13 10:13, J. Bruce Fields wrote:
> On Thu, Feb 21, 2013 at 05:15:10PM -0500, Steve Dickson wrote:
>> This enable NFSv4.2 support. To enable this code the
>> CONFIG_NFS_V4_2 Kconfig define needs to be set and
>> the -o v4.2 mount option need to be used.
>>
>> Signed-off-by: Steve Dickson <steved@redhat.com>
>> ---
>> fs/nfs/Kconfig | 11 ++++++++++-
>> fs/nfs/callback.c | 3 +++
>> fs/nfs/nfs4client.c | 5 +++++
>> fs/nfs/nfs4proc.c | 3 +++
>> fs/nfs/super.c | 7 ++++++-
>> include/linux/nfs4.h | 4 ++++
>> 6 files changed, 31 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
>> index 3861a1f..247db6d 100644
>> --- a/fs/nfs/Kconfig
>> +++ b/fs/nfs/Kconfig
>> @@ -104,6 +104,15 @@ config NFS_V4_1
>>
>> If unsure, say N.
>>
>> +config NFS_V4_2
>> + bool "NFS client support for NFSv4.2"
>> + depends on NFS_V4_1
>> + help
>> + This option enables support for minor version 1 of the NFSv4 protocol
>> + (RFC 5661) in the kernel's NFS client.
>> +
>> + If unsure, say N.
>> +
>> config PNFS_FILE_LAYOUT
>> tristate
>> depends on NFS_V4_1
>> @@ -133,7 +142,7 @@ config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN
>>
>> config NFS_V4_SECURITY_LABEL
>> bool "Provide Security Label support for NFSv4 client"
>> - depends on NFS_V4 && SECURITY
>> + depends on NFS_V4_2 && SECURITY
>> help
>>
>> Say Y here if you want enable fine-grained security label attribute
>> diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
>> index 5088b57..4058ec8 100644
>> --- a/fs/nfs/callback.c
>> +++ b/fs/nfs/callback.c
>> @@ -281,6 +281,9 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct n
>> case 1:
>> ret = nfs41_callback_up_net(serv, net);
>> break;
>> + case 2:
>> + ret = nfs41_callback_up_net(serv, net);
>> + break;
>> default:
>> printk(KERN_ERR "NFS: unknown callback version: %d\n",
>> minorversion);
>> diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
>> index 2e9779b..2987fd6 100644
>> --- a/fs/nfs/nfs4client.c
>> +++ b/fs/nfs/nfs4client.c
>> @@ -66,6 +66,11 @@ struct nfs_client *nfs4_alloc_client(const struct nfs_client_initdata *cl_init)
>> if (err)
>> goto error;
>>
>> + if (cl_init->minorversion > NFS4_MAX_MINOR_VERSION) {
>> + err = -EINVAL;
>> + goto error;
>> + }
>
> Why wasn't this check needed before?
It was not needed because the checks in nfs_parse_version_string caught
the mismatch minor version... but since minor version 2 is no longer
a mismatch and those checks in nfs_parse_version_string are not
covered by an ifdef this check is now needed...
>
>> +
>> spin_lock_init(&clp->cl_lock);
>> INIT_DELAYED_WORK(&clp->cl_renewd, nfs4_renew_state);
>> rpc_init_wait_queue(&clp->cl_rpcwaitq, "NFS client");
>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>> index 40c1d1f..08fc8e2 100644
>> --- a/fs/nfs/nfs4proc.c
>> +++ b/fs/nfs/nfs4proc.c
>> @@ -7136,6 +7136,9 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = {
>> #if defined(CONFIG_NFS_V4_1)
>> [1] = &nfs_v4_1_minor_ops,
>> #endif
>> +#if defined(CONFIG_NFS_V4_2)
>> + [2] = &nfs_v4_1_minor_ops,
>
> But then nfs_v4_minor_ops[2]->minor_version = 1.
>
> I think you want to create another structure--just define an
> nfs_v4_2_minor_ops field that's the same as nfs_v4_1_minor_ops except
> for the minor_version field.
That's how I started out:
#if defined(CONFIG_NFS_V4_2)
static const struct nfs4_minor_version_ops nfs_v4_2_minor_ops = {
.minor_version = 2,
.call_sync = nfs4_call_sync_sequence,
.match_stateid = nfs41_match_stateid,
.find_root_sec = nfs41_find_root_sec,
.reboot_recovery_ops = &nfs41_reboot_recovery_ops,
.nograce_recovery_ops = &nfs41_nograce_recovery_ops,
.state_renewal_ops = &nfs41_state_renewal_ops,
};
#endif
but it just seem like such a big waste of space... I could switch back...
Trond??
steved.
>
> --b.
>
>> +#endif
>> };
>>
>> const struct inode_operations nfs4_dir_inode_operations = {
>> diff --git a/fs/nfs/super.c b/fs/nfs/super.c
>> index 4e78f93..d35582c 100644
>> --- a/fs/nfs/super.c
>> +++ b/fs/nfs/super.c
>> @@ -269,7 +269,7 @@ static match_table_t nfs_local_lock_tokens = {
>>
>> enum {
>> Opt_vers_2, Opt_vers_3, Opt_vers_4, Opt_vers_4_0,
>> - Opt_vers_4_1,
>> + Opt_vers_4_1, Opt_vers_4_2,
>>
>> Opt_vers_err
>> };
>> @@ -280,6 +280,7 @@ static match_table_t nfs_vers_tokens = {
>> { Opt_vers_4, "4" },
>> { Opt_vers_4_0, "4.0" },
>> { Opt_vers_4_1, "4.1" },
>> + { Opt_vers_4_2, "4.2" },
>>
>> { Opt_vers_err, NULL }
>> };
>> @@ -1143,6 +1144,10 @@ static int nfs_parse_version_string(char *string,
>> mnt->version = 4;
>> mnt->minorversion = 1;
>> break;
>> + case Opt_vers_4_2:
>> + mnt->version = 4;
>> + mnt->minorversion = 2;
>> + break;
>> default:
>> return 0;
>> }
>> diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
>> index aab8bd8..e9c040a 100644
>> --- a/include/linux/nfs4.h
>> +++ b/include/linux/nfs4.h
>> @@ -394,11 +394,15 @@ enum lock_type4 {
>> #define NFS4_VERSION 4
>> #define NFS4_MINOR_VERSION 0
>>
>> +#if defined(CONFIG_NFS_V4_2)
>> +#define NFS4_MAX_MINOR_VERSION 2
>> +#else
>> #if defined(CONFIG_NFS_V4_1)
>> #define NFS4_MAX_MINOR_VERSION 1
>> #else
>> #define NFS4_MAX_MINOR_VERSION 0
>> #endif /* CONFIG_NFS_V4_1 */
>> +#endif /* CONFIG_NFS_V4_2 */
>>
>> #define NFS4_DEBUG 1
>>
>> --
>> 1.8.1.2
>>
next prev parent reply other threads:[~2013-02-22 16:38 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-21 22:15 [PATCH 0/2] NFS v4.2 support to both the server and client Steve Dickson
2013-02-21 22:15 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
2013-02-21 22:22 ` Myklebust, Trond
2013-02-21 23:13 ` Steve Dickson
2013-02-22 15:28 ` J. Bruce Fields
2013-02-22 15:34 ` Myklebust, Trond
2013-02-22 15:13 ` J. Bruce Fields
2013-02-22 16:38 ` Steve Dickson [this message]
2013-02-22 16:58 ` J. Bruce Fields
2013-02-22 17:01 ` Steve Dickson
2013-02-21 22:15 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
2013-02-22 15:26 ` J. Bruce Fields
2013-02-22 15:30 ` Myklebust, Trond
2013-02-22 15:38 ` J. Bruce Fields
-- strict thread matches above, loose matches on Subject: below --
2013-02-22 8:47 [PATCH 0/2] NFS v4.2 support to both the server and client (take 2) Steve Dickson
2013-02-22 8:47 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
2013-02-22 13:11 ` Jim Rees
2013-02-22 13:55 ` Steve Dickson
2013-02-22 14:34 [PATCH 0/2] NFS v4.2 support to both the server and client (take 3) Steve Dickson
2013-02-22 14:34 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
2013-02-22 14:41 ` Myklebust, Trond
2013-02-22 15:32 ` Steve Dickson
2013-02-22 17:09 [PATCH 0/2] NFS v4.2 support to both the server and client (take 4) Steve Dickson
2013-02-22 17:09 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51279F01.2020000@RedHat.com \
--to=steved@redhat.com \
--cc=Trond.Myklebust@netapp.com \
--cc=bfields@redhat.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).