From: Steve Dickson <SteveD@redhat.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>,
"J. Bruce Fields" <bfields@redhat.com>,
"David P. Quigley" <dpquigl@tycho.nsa.gov>
Cc: Linux NFS list <linux-nfs@vger.kernel.org>,
Linux FS devel list <linux-fsdevel@vger.kernel.org>,
Linux Security List <linux-security-module@vger.kernel.org>,
SELinux List <selinux@tycho.nsa.gov>
Subject: [PATCH 15/19] NFSv4.2: Added NFS v4.2 support to the NFS client
Date: Tue, 2 Apr 2013 17:45:56 -0400 [thread overview]
Message-ID: <1364939160-20874-16-git-send-email-SteveD@redhat.com> (raw)
In-Reply-To: <1364939160-20874-1-git-send-email-SteveD@redhat.com>
From: Steve Dickson <steved@redhat.com>
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 | 1 +
fs/nfs/nfs4client.c | 5 +++++
fs/nfs/nfs4proc.c | 15 +++++++++++++++
fs/nfs/super.c | 7 ++++++-
include/linux/nfs4.h | 4 ++++
6 files changed, 42 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..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 ac4fc9a..30c70a4 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 cd3b02e..b7eae1e 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -7185,11 +7185,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 d08a783..68c42be 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 }
};
@@ -1098,6 +1099,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 650a678..445792a 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -398,11 +398,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.4
next prev parent reply other threads:[~2013-04-02 21:46 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-02 21:45 [PATCH 00/19] lnfs: 3.9-rc5 release Steve Dickson
2013-04-02 21:45 ` [PATCH 01/19] Security: Add hook to calculate context based on a negative dentry Steve Dickson
2013-04-02 23:35 ` Myklebust, Trond
[not found] ` <1364945729.3026.7.camel-5lNtUQgoD8Pfa3cDbr2K10B+6BGkLq7r@public.gmane.org>
2013-04-03 19:57 ` David Quigley
2013-04-02 21:45 ` [PATCH 03/19] LSM: Add flags field to security_sb_set_mnt_opts for in kernel mount data Steve Dickson
2013-04-02 21:45 ` [PATCH 04/19] SELinux: Add new labeling type native labels Steve Dickson
2013-04-02 21:45 ` [PATCH 05/19] NFSv4: Add label recommended attribute and NFSv4 flags Steve Dickson
2013-04-02 21:45 ` [PATCH 06/19] NFSv4: Introduce new label structure Steve Dickson
2013-04-02 21:45 ` [PATCH 07/19] NFSv4: Extend fattr bitmaps to support all 3 words Steve Dickson
2013-04-02 21:45 ` [PATCH 09/19] NFS: Add label lifecycle management Steve Dickson
2013-04-02 21:45 ` [PATCH 10/19] NFS: Client implementation of Labeled-NFS Steve Dickson
2013-04-02 21:45 ` [PATCH 11/19] NFS: Extend NFS xattr handlers to accept the security namespace Steve Dickson
[not found] ` <1364939160-20874-1-git-send-email-SteveD-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-02 21:45 ` [PATCH 02/19] Security: Add Hook to test if the particular xattr is part of a MAC model Steve Dickson
2013-04-02 21:45 ` [PATCH 08/19] NFS:Add labels to client function prototypes Steve Dickson
2013-04-02 21:45 ` [PATCH 12/19] Kconfig: Add Kconfig entry for Labeled NFS V4 client Steve Dickson
2013-04-02 21:45 ` [PATCH 13/19] NFSD: Server implementation of MAC Labeling Steve Dickson
[not found] ` <1364939160-20874-14-git-send-email-SteveD-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-10 15:19 ` J. Bruce Fields
[not found] ` <20130410151953.GC24404-spRCxval1Z7TsXDwO4sDpg@public.gmane.org>
2013-04-23 19:40 ` Steve Dickson
2013-04-23 19:44 ` J. Bruce Fields
2013-04-23 19:51 ` Steve Dickson
2013-04-02 21:46 ` [PATCH 19/19] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
2013-04-10 15:25 ` J. Bruce Fields
2013-04-10 15:58 ` Steve Dickson
2013-04-10 20:12 ` J. Bruce Fields
2013-04-11 16:58 ` Steve Dickson
2013-04-02 21:45 ` [PATCH 14/19] Kconfig: Add Kconfig entry for Labeled NFS V4 server Steve Dickson
2013-04-02 21:45 ` Steve Dickson [this message]
2013-04-02 21:45 ` [PATCH 16/19] NFSv4.2: Only allocate labels on v4.2 mounts Steve Dickson
2013-04-02 21:45 ` [PATCH 17/19] NFSv4.2: Only set the label attribute " Steve Dickson
2013-04-02 21:45 ` [PATCH 18/19] NFSv4.2: Added v4.2 error codes Steve Dickson
2013-04-10 15:09 ` [PATCH 00/19] lnfs: 3.9-rc5 release J. Bruce Fields
[not found] ` <20130410150940.GB24404-spRCxval1Z7TsXDwO4sDpg@public.gmane.org>
2013-04-10 15:48 ` Steve Dickson
2013-04-12 15:03 ` J. Bruce Fields
2013-04-23 15:46 ` Steve Dickson
2013-04-23 16:05 ` J. Bruce Fields
2013-04-23 17:22 ` J. Bruce Fields
[not found] ` <20130423172227.GF20622-spRCxval1Z7TsXDwO4sDpg@public.gmane.org>
2013-04-23 18:04 ` Steve Dickson
[not found] ` <5176CD42.4080405-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2013-04-23 18:15 ` J. Bruce Fields
2013-04-23 18:40 ` Mimi Zohar
2013-04-23 18:57 ` 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=1364939160-20874-16-git-send-email-SteveD@redhat.com \
--to=steved@redhat.com \
--cc=Trond.Myklebust@netapp.com \
--cc=bfields@redhat.com \
--cc=dpquigl@tycho.nsa.gov \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=selinux@tycho.nsa.gov \
/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).