* [PATCH 0/2] NFS v4.2 support to both the server and client (take 4) @ 2013-02-22 17:09 Steve Dickson 2013-02-22 17:09 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson 2013-02-22 17:09 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson 0 siblings, 2 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-22 17:09 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list Changes: * fixed typo in Kconfig * Reworked verbiage in Kconfig file * Merged cases in nfs_callback_up_net() * Created a new nfs4_minor_version_ops structure for minor version 2 * Correctly initialized minor number in nfsd_exchange_id() * Correct a comment in the nfs4_cb_conn structure. These patches add v4.2 support to both the server and client. The v4.1 code is reused to support this new version. Main reason for this new version is to enable features like Label NFS. Note, these patches apply on top of the lNFS: 3.8-rc3 release patches. Although the only conflict, if applied without those patches, would be in the Kconfig files Steve Dickson (2): NFSv4.2: Added NFS v4.2 support to the NFS client NFSDv4.2: Added NFS v4.2 support to the NFS server fs/nfs/Kconfig | 33 +++++++++++++++++++-------------- fs/nfs/callback.c | 1 + fs/nfs/nfs4client.c | 5 +++++ fs/nfs/nfs4proc.c | 15 +++++++++++++++ fs/nfs/super.c | 7 ++++++- fs/nfsd/nfs4state.c | 2 +- fs/nfsd/nfs4xdr.c | 1 + fs/nfsd/nfsd.h | 2 +- fs/nfsd/state.h | 2 +- include/linux/nfs4.h | 4 ++++ 10 files changed, 54 insertions(+), 18 deletions(-) -- 1.8.1.2 ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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 ` Steve Dickson 2013-02-22 17:09 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson 1 sibling, 0 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-22 17:09 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list 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 | 33 +++++++++++++++++++-------------- fs/nfs/callback.c | 1 + fs/nfs/nfs4client.c | 5 +++++ fs/nfs/nfs4proc.c | 15 +++++++++++++++ fs/nfs/super.c | 7 ++++++- include/linux/nfs4.h | 4 ++++ 6 files changed, 50 insertions(+), 15 deletions(-) diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig index 3861a1f..ec33289 100644 --- a/fs/nfs/Kconfig +++ b/fs/nfs/Kconfig @@ -104,6 +104,23 @@ 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 2 of the NFSv4 protocol + in the kernel's NFS client. + + Say Y here if you want enable fine-grained security label attribute + support for NFS version 4. Security labels allow security modules like + SELinux and Smack to label files to facilitate enforcement of their policies. + Without this an NFSv4 mount will have the same label on each file. + + WARNING: there is still a chance of backwards-incompatible protocol changes. + For now we recommend "Y" only for developers and testers." + + If unsure, say N. + config PNFS_FILE_LAYOUT tristate depends on NFS_V4_1 @@ -133,21 +150,9 @@ 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 - help - - Say Y here if you want enable fine-grained security label attribute - support for NFS version 4. Security labels allow security modules like - SELinux and Smack to label files to facilitate enforcement of their policies. - Without this an NFSv4 mount will have the same label on each file. - - If you do not wish to enable fine-grained security labels SELinux or - Smack policies on NFSv4 files, say N. - - WARNING: there is still a chance of backwards-incompatible protocol changes. - For now we recommend "Y" only for developers and testers." + depends on NFS_V4_2 && SECURITY + default y - If unsure, say N. config ROOT_NFS bool "Root file system on NFS" diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 5088b57..cb35747 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -279,6 +279,7 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct n ret = nfs4_callback_up_net(serv, net); break; case 1: + case 2: ret = nfs41_callback_up_net(serv, net); break; default: 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; + } + 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 30b3e44..826c48d 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -7131,11 +7131,26 @@ static const struct nfs4_minor_version_ops nfs_v4_1_minor_ops = { }; #endif +#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 + const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = { [0] = &nfs_v4_0_minor_ops, #if defined(CONFIG_NFS_V4_1) [1] = &nfs_v4_1_minor_ops, #endif +#if defined(CONFIG_NFS_V4_2) + [2] = &nfs_v4_2_minor_ops, +#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 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 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 @ 2013-02-22 17:09 ` Steve Dickson 2013-02-22 18:05 ` J. Bruce Fields 1 sibling, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-22 17:09 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list This enable NFSv4.2 support for the server. To enable this code do the following: echo "+4.2" >/proc/fs/nfsd/versions after the nfsd kernel module is loaded. Signed-off-by: Steve Dickson <steved@redhat.com> --- fs/nfsd/nfs4state.c | 2 +- fs/nfsd/nfs4xdr.c | 1 + fs/nfsd/nfsd.h | 2 +- fs/nfsd/state.h | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index ac8ed96..947c550 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1678,7 +1678,7 @@ out_new: status = nfserr_jukebox; goto out; } - new->cl_minorversion = 1; + new->cl_minorversion = cstate->minorversion; gen_clid(new, nn); add_to_unconfirmed(new); diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index d2ae8db..86be853 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops { static struct nfsd4_minorversion_ops nfsd4_minorversion[] = { [0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) }, [1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) }, + [2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) }, }; static __be32 diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h index 26a457b..0e3ccd1 100644 --- a/fs/nfsd/nfsd.h +++ b/fs/nfsd/nfsd.h @@ -24,7 +24,7 @@ /* * nfsd version */ -#define NFSD_SUPPORTED_MINOR_VERSION 1 +#define NFSD_SUPPORTED_MINOR_VERSION 2 /* * Maximum blocksizes supported by daemon under various circumstances. */ diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index d1c229f..de9416b 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h @@ -108,7 +108,7 @@ struct nfs4_cb_conn { u32 cb_prog; /* used only in 4.0 case; per-session otherwise */ u32 cb_ident; /* minorversion 0 only */ - struct svc_xprt *cb_xprt; /* minorversion 1 only */ + struct svc_xprt *cb_xprt; /* minorversion >= 1 only */ }; static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s) -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 2013-02-22 17:09 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson @ 2013-02-22 18:05 ` J. Bruce Fields 2013-02-22 18:10 ` J. Bruce Fields 2013-02-23 12:43 ` Steve Dickson 0 siblings, 2 replies; 24+ messages in thread From: J. Bruce Fields @ 2013-02-22 18:05 UTC (permalink / raw) To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote: > This enable NFSv4.2 support for the server. To enable this > code do the following: > echo "+4.2" >/proc/fs/nfsd/versions Give it a config option and we're set.... --b. > > after the nfsd kernel module is loaded. > > Signed-off-by: Steve Dickson <steved@redhat.com> > --- > fs/nfsd/nfs4state.c | 2 +- > fs/nfsd/nfs4xdr.c | 1 + > fs/nfsd/nfsd.h | 2 +- > fs/nfsd/state.h | 2 +- > 4 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index ac8ed96..947c550 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -1678,7 +1678,7 @@ out_new: > status = nfserr_jukebox; > goto out; > } > - new->cl_minorversion = 1; > + new->cl_minorversion = cstate->minorversion; > > gen_clid(new, nn); > add_to_unconfirmed(new); > diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c > index d2ae8db..86be853 100644 > --- a/fs/nfsd/nfs4xdr.c > +++ b/fs/nfsd/nfs4xdr.c > @@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops { > static struct nfsd4_minorversion_ops nfsd4_minorversion[] = { > [0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) }, > [1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) }, > + [2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) }, > }; > > static __be32 > diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h > index 26a457b..0e3ccd1 100644 > --- a/fs/nfsd/nfsd.h > +++ b/fs/nfsd/nfsd.h > @@ -24,7 +24,7 @@ > /* > * nfsd version > */ > -#define NFSD_SUPPORTED_MINOR_VERSION 1 > +#define NFSD_SUPPORTED_MINOR_VERSION 2 > /* > * Maximum blocksizes supported by daemon under various circumstances. > */ > diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h > index d1c229f..de9416b 100644 > --- a/fs/nfsd/state.h > +++ b/fs/nfsd/state.h > @@ -108,7 +108,7 @@ struct nfs4_cb_conn { > u32 cb_prog; /* used only in 4.0 case; > per-session otherwise */ > u32 cb_ident; /* minorversion 0 only */ > - struct svc_xprt *cb_xprt; /* minorversion 1 only */ > + struct svc_xprt *cb_xprt; /* minorversion >= 1 only */ > }; > > static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s) > -- > 1.8.1.2 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 2013-02-22 18:05 ` J. Bruce Fields @ 2013-02-22 18:10 ` J. Bruce Fields 2013-02-23 14:49 ` Steve Dickson 2013-02-23 12:43 ` Steve Dickson 1 sibling, 1 reply; 24+ messages in thread From: J. Bruce Fields @ 2013-02-22 18:10 UTC (permalink / raw) To: J. Bruce Fields; +Cc: Steve Dickson, Trond Myklebust, Linux NFS Mailing list On Fri, Feb 22, 2013 at 01:05:15PM -0500, J. Bruce Fields wrote: > On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote: > > This enable NFSv4.2 support for the server. To enable this > > code do the following: > > echo "+4.2" >/proc/fs/nfsd/versions > > Give it a config option and we're set.... Also, while you're testing these: worth firing up wireshark and checking that "2"'s actually being sent in minorversion field, both on ordinary compounds and on callbacks. --b. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 2013-02-22 18:10 ` J. Bruce Fields @ 2013-02-23 14:49 ` Steve Dickson 0 siblings, 0 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-23 14:49 UTC (permalink / raw) To: J. Bruce Fields; +Cc: J. Bruce Fields, Trond Myklebust, Linux NFS Mailing list On 22/02/13 13:10, J. Bruce Fields wrote: > On Fri, Feb 22, 2013 at 01:05:15PM -0500, J. Bruce Fields wrote: >> On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote: >>> This enable NFSv4.2 support for the server. To enable this >>> code do the following: >>> echo "+4.2" >/proc/fs/nfsd/versions >> >> Give it a config option and we're set.... > > Also, while you're testing these: worth firing up wireshark and checking > that "2"'s actually being sent in minorversion field, both on ordinary > compounds and on callbacks. I just confirmed with these latest bits, minorversion is definitely getting set to "2". steved. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 2013-02-22 18:05 ` J. Bruce Fields 2013-02-22 18:10 ` J. Bruce Fields @ 2013-02-23 12:43 ` Steve Dickson 2013-02-23 13:00 ` J. Bruce Fields 1 sibling, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-23 12:43 UTC (permalink / raw) To: J. Bruce Fields; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list On 22/02/13 13:05, J. Bruce Fields wrote: > On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote: >> > This enable NFSv4.2 support for the server. To enable this >> > code do the following: >> > echo "+4.2" >/proc/fs/nfsd/versions > Give it a config option and we're set.... I didn't a config option in fs/nfsd/Kconfig for 4.1 which is the reason I didn't add one for 4.2... Should I add both? steved. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 2013-02-23 12:43 ` Steve Dickson @ 2013-02-23 13:00 ` J. Bruce Fields 2013-02-23 13:01 ` J. Bruce Fields 0 siblings, 1 reply; 24+ messages in thread From: J. Bruce Fields @ 2013-02-23 13:00 UTC (permalink / raw) To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list On Sat, Feb 23, 2013 at 07:43:43AM -0500, Steve Dickson wrote: > > > On 22/02/13 13:05, J. Bruce Fields wrote: > > On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote: > >> > This enable NFSv4.2 support for the server. To enable this > >> > code do the following: > >> > echo "+4.2" >/proc/fs/nfsd/versions > > Give it a config option and we're set.... > I didn't a config option in fs/nfsd/Kconfig for 4.1 which is > the reason I didn't add one for 4.2... Should I add both? Well.... I guess if it defaults to off at runtime, and if there's a config option for labeled NFS--maybe there's no harm to it. At worst somebody turns on 4.2 by option but hey it should be fully spec-compliant as 4.2 is only optional stuff. --b. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server 2013-02-23 13:00 ` J. Bruce Fields @ 2013-02-23 13:01 ` J. Bruce Fields 0 siblings, 0 replies; 24+ messages in thread From: J. Bruce Fields @ 2013-02-23 13:01 UTC (permalink / raw) To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list On Sat, Feb 23, 2013 at 08:00:56AM -0500, J. Bruce Fields wrote: > On Sat, Feb 23, 2013 at 07:43:43AM -0500, Steve Dickson wrote: > > > > > > On 22/02/13 13:05, J. Bruce Fields wrote: > > > On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote: > > >> > This enable NFSv4.2 support for the server. To enable this > > >> > code do the following: > > >> > echo "+4.2" >/proc/fs/nfsd/versions > > > Give it a config option and we're set.... > > I didn't a config option in fs/nfsd/Kconfig for 4.1 which is > > the reason I didn't add one for 4.2... Should I add both? > > Well.... I guess if it defaults to off at runtime, and if there's a > config option for labeled NFS--maybe there's no harm to it. At worst > somebody turns on 4.2 by option but hey it should be fully > spec-compliant as 4.2 is only optional stuff. (In other words: OK, OK, never mind, we can do without!) --b. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 0/2] NFS v4.2 support to both the server and client (take 3) @ 2013-02-22 14:34 Steve Dickson 2013-02-22 14:34 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-22 14:34 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list Changes: * fixed typo in Kconfig These patches add v4.2 support to both the server and client. The v4.1 code is reused to support this new version. Main reason for this new version is to enable features like Label NFS. Note, these patches apply on top of the lNFS: 3.8-rc3 release patches. Although the only conflict, if applied without those patches, would be in the Kconfig files Steve Dickson (2): NFSv4.2: Added NFS v4.2 support to the NFS client NFSDv4.2: Added NFS v4.2 support to the NFS server fs/nfs/Kconfig | 12 +++++++++++- fs/nfs/callback.c | 3 +++ fs/nfs/nfs4client.c | 5 +++++ fs/nfs/nfs4proc.c | 3 +++ fs/nfs/super.c | 7 ++++++- fs/nfsd/nfs4xdr.c | 1 + fs/nfsd/nfsd.h | 2 +- include/linux/nfs4.h | 4 ++++ 8 files changed, 34 insertions(+), 3 deletions(-) -- 1.8.1.2 ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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 ` Steve Dickson 2013-02-22 14:41 ` Myklebust, Trond 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-22 14:34 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list 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 | 12 +++++++++++- 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, 32 insertions(+), 2 deletions(-) diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig index 3861a1f..4190710 100644 --- a/fs/nfs/Kconfig +++ b/fs/nfs/Kconfig @@ -104,6 +104,16 @@ config NFS_V4_1 If unsure, say N. +config NFS_V4_2 + bool "NFS client support for NFSv4.2" + depends on NFS_V4_1 + select NFS_V4_SECURITY_LABEL + help + This option enables support for minor version 2 of the NFSv4 protocol + in the kernel's NFS client. + + If unsure, say N. + config PNFS_FILE_LAYOUT tristate depends on NFS_V4_1 @@ -133,7 +143,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; + } + 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 30b3e44..2384f91 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, +#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 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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 0 siblings, 1 reply; 24+ messages in thread From: Myklebust, Trond @ 2013-02-22 14:41 UTC (permalink / raw) To: Steve Dickson; +Cc: J. Bruce Fields, Linux NFS Mailing list On Fri, 2013-02-22 at 09:34 -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 | 12 +++++++++++- > 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, 32 insertions(+), 2 deletions(-) > > diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig > index 3861a1f..4190710 100644 > --- a/fs/nfs/Kconfig > +++ b/fs/nfs/Kconfig > @@ -104,6 +104,16 @@ config NFS_V4_1 > > If unsure, say N. > > +config NFS_V4_2 > + bool "NFS client support for NFSv4.2" > + depends on NFS_V4_1 > + select NFS_V4_SECURITY_LABEL > + help > + This option enables support for minor version 2 of the NFSv4 protocol > + in the kernel's NFS client. + Say Y here if you want enable fine-grained security label attributes > + > + If unsure, say N. > + > config PNFS_FILE_LAYOUT > tristate > depends on NFS_V4_1 > @@ -133,7 +143,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 You don't need the above select at all above if you change this to config NFS_V4_SECURITY_LABEL bool depends on NFS_V4_2 && SECURITY default y > > 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: Since this is identical to case 1:, they should be merged. > + 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; > + } > + > 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 30b3e44..2384f91 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, > +#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 > -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-22 14:41 ` Myklebust, Trond @ 2013-02-22 15:32 ` Steve Dickson 0 siblings, 0 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-22 15:32 UTC (permalink / raw) To: Myklebust, Trond; +Cc: J. Bruce Fields, Linux NFS Mailing list On 22/02/13 09:41, Myklebust, Trond wrote: > On Fri, 2013-02-22 at 09:34 -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 | 12 +++++++++++- >> 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, 32 insertions(+), 2 deletions(-) >> >> diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig >> index 3861a1f..4190710 100644 >> --- a/fs/nfs/Kconfig >> +++ b/fs/nfs/Kconfig >> @@ -104,6 +104,16 @@ config NFS_V4_1 >> >> If unsure, say N. >> >> +config NFS_V4_2 >> + bool "NFS client support for NFSv4.2" >> + depends on NFS_V4_1 >> + select NFS_V4_SECURITY_LABEL >> + help >> + This option enables support for minor version 2 of the NFSv4 protocol >> + in the kernel's NFS client. > > + Say Y here if you want enable fine-grained security label attributes Ok... > >> + >> + If unsure, say N. >> + >> config PNFS_FILE_LAYOUT >> tristate >> depends on NFS_V4_1 >> @@ -133,7 +143,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 > > You don't need the above select at all above if you change this to > > config NFS_V4_SECURITY_LABEL > bool > depends on NFS_V4_2 && SECURITY > default y Fine... > >> >> 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: > > > Since this is identical to case 1:, they should be merged. I guess wrong on how you wanted this handled... ;-) steved. > >> + 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; >> + } >> + >> 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 30b3e44..2384f91 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, >> +#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 >> > ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 0/2] NFS v4.2 support to both the server and client (take 2) @ 2013-02-22 8:47 Steve Dickson 2013-02-22 8:47 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-22 8:47 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list These patche added v4.2 support to both the server and client. Basically the v4.1 code is reused, but the minor version is needed to enable features like label NFS. Note, these patch apply on top of the lNFS: 3.8-rc3 release patches. Although the only conflict if applied without those patches would be in the Kconfig files Steve Dickson (2): NFSv4.2: Added NFS v4.2 support to the NFS client NFSDv4.2: Added NFS v4.2 support to the NFS server fs/nfs/Kconfig | 12 +++++++++++- fs/nfs/callback.c | 3 +++ fs/nfs/nfs4client.c | 5 +++++ fs/nfs/nfs4proc.c | 3 +++ fs/nfs/super.c | 7 ++++++- fs/nfsd/nfs4xdr.c | 1 + fs/nfsd/nfsd.h | 2 +- include/linux/nfs4.h | 4 ++++ 8 files changed, 34 insertions(+), 3 deletions(-) -- 1.8.1.2 ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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 ` Steve Dickson 2013-02-22 13:11 ` Jim Rees 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-22 8:47 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list 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 | 12 +++++++++++- 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, 32 insertions(+), 2 deletions(-) diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig index 3861a1f..b80754b 100644 --- a/fs/nfs/Kconfig +++ b/fs/nfs/Kconfig @@ -104,6 +104,16 @@ config NFS_V4_1 If unsure, say N. +config NFS_V4_2 + bool "NFS client support for NFSv4.2" + depends on NFS_V4_1 + select NFS_V4_SECURITY_LABEL + help + This option enables support for minor version 1 of the NFSv4 protocol + in the kernel's NFS client. + + If unsure, say N. + config PNFS_FILE_LAYOUT tristate depends on NFS_V4_1 @@ -133,7 +143,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; + } + 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 30b3e44..2384f91 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, +#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 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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 0 siblings, 1 reply; 24+ messages in thread From: Jim Rees @ 2013-02-22 13:11 UTC (permalink / raw) To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list Steve Dickson wrote: +config NFS_V4_2 + bool "NFS client support for NFSv4.2" + depends on NFS_V4_1 + select NFS_V4_SECURITY_LABEL + help + This option enables support for minor version 1 of the NFSv4 protocol + in the kernel's NFS client. + + If unsure, say N. + Shouldn't that be "enables support for minor version 2..."? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-22 13:11 ` Jim Rees @ 2013-02-22 13:55 ` Steve Dickson 0 siblings, 0 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-22 13:55 UTC (permalink / raw) To: Jim Rees; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list On 22/02/13 08:11, Jim Rees wrote: > Steve Dickson wrote: > > +config NFS_V4_2 > + bool "NFS client support for NFSv4.2" > + depends on NFS_V4_1 > + select NFS_V4_SECURITY_LABEL > + help > + This option enables support for minor version 1 of the NFSv4 protocol > + in the kernel's NFS client. > + > + If unsure, say N. > + > > Shouldn't that be "enables support for minor version 2..."? > Yes it should be... thanks! steved. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 0/2] NFS v4.2 support to both the server and client @ 2013-02-21 22:15 Steve Dickson 2013-02-21 22:15 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-21 22:15 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list This is the first attempt to added v4.2 support to both the server and client. Basically the v4.1 code is reused, but the minor version is needed to enable features like label NFS. Steve Dickson (2): NFSv4.2: Added NFS v4.2 support to the NFS client NFSDv4.2: Added NFS v4.2 support to the NFS server fs/nfs/Kconfig | 11 ++++++++++- fs/nfs/callback.c | 3 +++ fs/nfs/nfs4client.c | 5 +++++ fs/nfs/nfs4proc.c | 3 +++ fs/nfs/super.c | 7 ++++++- fs/nfsd/nfs4xdr.c | 1 + fs/nfsd/nfsd.h | 2 +- include/linux/nfs4.h | 4 ++++ 8 files changed, 33 insertions(+), 3 deletions(-) -- 1.8.1.2 ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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 ` Steve Dickson 2013-02-21 22:22 ` Myklebust, Trond 2013-02-22 15:13 ` J. Bruce Fields 0 siblings, 2 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-21 22:15 UTC (permalink / raw) To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list 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; + } + 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, +#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 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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:13 ` J. Bruce Fields 1 sibling, 1 reply; 24+ messages in thread From: Myklebust, Trond @ 2013-02-21 22:22 UTC (permalink / raw) To: Steve Dickson; +Cc: J. Bruce Fields, Linux NFS Mailing list On Thu, 2013-02-21 at 17:15 -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 Just have NFS_V4_SECURITY_LABEL be automatically selected by NFS_V4_2. Requiring users to manually select both makes little sense... > 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: case 2: > 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; > + } > + > 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, > +#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 > -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-21 22:22 ` Myklebust, Trond @ 2013-02-21 23:13 ` Steve Dickson 2013-02-22 15:28 ` J. Bruce Fields 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-21 23:13 UTC (permalink / raw) To: Myklebust, Trond; +Cc: J. Bruce Fields, Linux NFS Mailing list On 21/02/13 17:22, Myklebust, Trond wrote: > On Thu, 2013-02-21 at 17:15 -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 > Just have NFS_V4_SECURITY_LABEL be automatically selected by NFS_V4_2. > Requiring users to manually select both makes little sense... > > Yeah... that make sense... steved. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-21 23:13 ` Steve Dickson @ 2013-02-22 15:28 ` J. Bruce Fields 2013-02-22 15:34 ` Myklebust, Trond 0 siblings, 1 reply; 24+ messages in thread From: J. Bruce Fields @ 2013-02-22 15:28 UTC (permalink / raw) To: Steve Dickson; +Cc: Myklebust, Trond, Linux NFS Mailing list On Thu, Feb 21, 2013 at 06:13:40PM -0500, Steve Dickson wrote: > > > On 21/02/13 17:22, Myklebust, Trond wrote: > > On Thu, 2013-02-21 at 17:15 -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 > > Just have NFS_V4_SECURITY_LABEL be automatically selected by NFS_V4_2. > > Requiring users to manually select both makes little sense... > > > > > Yeah... that make sense... Why do we even need the two config options (both NFS_SECURITY_LABEL and NFS_V4_2)? Until we have more 4.2 features it seems redundant. --b. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-22 15:28 ` J. Bruce Fields @ 2013-02-22 15:34 ` Myklebust, Trond 0 siblings, 0 replies; 24+ messages in thread From: Myklebust, Trond @ 2013-02-22 15:34 UTC (permalink / raw) To: J. Bruce Fields; +Cc: Steve Dickson, Linux NFS Mailing list On Fri, 2013-02-22 at 10:28 -0500, J. Bruce Fields wrote: > On Thu, Feb 21, 2013 at 06:13:40PM -0500, Steve Dickson wrote: > > > > > > On 21/02/13 17:22, Myklebust, Trond wrote: > > > On Thu, 2013-02-21 at 17:15 -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 > > > Just have NFS_V4_SECURITY_LABEL be automatically selected by NFS_V4_2. > > > Requiring users to manually select both makes little sense... > > > > > > > > Yeah... that make sense... > > Why do we even need the two config options (both NFS_SECURITY_LABEL and > NFS_V4_2)? Until we have more 4.2 features it seems redundant. Not really. CONFIG_NFS_SECURITY_LABEL has a dependency on CONFIG_SECURITY that I don't expect copy offload and other future NFSv4.2 features to have. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 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-22 15:13 ` J. Bruce Fields 2013-02-22 16:38 ` Steve Dickson 1 sibling, 1 reply; 24+ messages in thread From: J. Bruce Fields @ 2013-02-22 15:13 UTC (permalink / raw) To: Steve Dickson; +Cc: Trond Myklebust, Linux NFS Mailing list 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? > + > 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. --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 > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-22 15:13 ` J. Bruce Fields @ 2013-02-22 16:38 ` Steve Dickson 2013-02-22 16:58 ` J. Bruce Fields 0 siblings, 1 reply; 24+ messages in thread From: Steve Dickson @ 2013-02-22 16:38 UTC (permalink / raw) To: J. Bruce Fields; +Cc: Trond Myklebust, Linux NFS Mailing list 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 >> ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-22 16:38 ` Steve Dickson @ 2013-02-22 16:58 ` J. Bruce Fields 2013-02-22 17:01 ` Steve Dickson 0 siblings, 1 reply; 24+ messages in thread From: J. Bruce Fields @ 2013-02-22 16:58 UTC (permalink / raw) To: Steve Dickson; +Cc: Trond Myklebust, Linux NFS Mailing list 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? > >> + > >> 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.... --b. > I could switch back... ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client 2013-02-22 16:58 ` J. Bruce Fields @ 2013-02-22 17:01 ` Steve Dickson 0 siblings, 0 replies; 24+ messages in thread From: Steve Dickson @ 2013-02-22 17:01 UTC (permalink / raw) To: J. Bruce Fields; +Cc: Trond Myklebust, Linux NFS Mailing list 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... ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2013-02-23 14:50 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 2013-02-22 17:09 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson 2013-02-22 18:05 ` J. Bruce Fields 2013-02-22 18:10 ` J. Bruce Fields 2013-02-23 14:49 ` Steve Dickson 2013-02-23 12:43 ` Steve Dickson 2013-02-23 13:00 ` J. Bruce Fields 2013-02-23 13:01 ` J. Bruce Fields -- strict thread matches above, loose matches on Subject: below -- 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 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-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 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).