On May 5, 2009, at 5:46 PM, Kevin Constantine wrote:
This allows a user to specify nfsvers=4, or vers=4 on the mount
commandline and have mount.nfs4 called as though fstype=nfs4 were
specified. This patch handles the nfsmount_string case in
mount.c's try_mount().
We get the value of the "vers=" or "nfsvers=" from the nfsmount_info
structure, and if the value equals 4, we set the fstype to nfs4, and
remove the nfsvers/vers options from the structure since it shouldn't
be there in the first place, and we don't want to pass it along down
the stack.
po_get_numeric returns the rightmost instance, so we honor the last
value of nfsvers/vers in the event that it is overridden later in the
options string.
Signed-off-by: Kevin Constantine <kevin.constantine@xxxxxxxxxxxxxxxxxxx
>
---
utils/mount/stropts.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index c369136..72b0d13 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -754,6 +754,15 @@ static const char *nfs_background_opttbl[] = {
static int nfsmount_start(struct nfsmount_info *mi)
{
+ long tmp;
+ po_get_numeric(mi->options, "vers", &tmp);
+ po_get_numeric(mi->options, "nfsvers", &tmp);
If someone specifies both a vers= and a nfsvers= on the command line,
this won't handle it. You need to implement a rightmost search, as
Steve's patch (posted previously on this list) did.
+ if (tmp == 4) {
+ mi->type = "nfs4";
+ po_remove_all(mi->options, "vers");
+ po_remove_all(mi->options, "nfsvers");
+ }
+
if (!nfs_validate_options(mi))
return EX_FAIL;
--
1.6.2.1
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs"
in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html