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 12:01:49 -0500 [thread overview]
Message-ID: <5127A47D.4060602@RedHat.com> (raw)
In-Reply-To: <20130222165858.GB10846@pad.fieldses.org>
On 22/02/13 11:58, J. Bruce Fields wrote:
> On Fri, Feb 22, 2013 at 11:38:25AM -0500, Steve Dickson wrote:
>>
>>
>> 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...
>
> NFSv4.1 could be configured out too. How did it manage to return an
> error for minorversion == 1 in the !CONFIG_NFS_V4_1 case before?
Never tested?? I can't say... but this was the very first oops when
I enabled the 4.2 parsing...
>
>>>> +
>>>> 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...
>
> Correctness first....
Fine... new version on the way...
steved.
>
> --b.
>
>> I could switch back...
next prev parent reply other threads:[~2013-02-22 17:01 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
2013-02-22 16:58 ` J. Bruce Fields
2013-02-22 17:01 ` Steve Dickson [this message]
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=5127A47D.4060602@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).