summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2008-07-15 12:17:19 -0400
committerSteve Dickson <steved@redhat.com>2008-07-15 12:17:19 -0400
commit8bca04ebcc345784bf2ef29f0781e66157d76558 (patch)
tree181eda881ce991e3458ab977ae752204f252888b
parent46c6575fe23a7468c17ec3329d956e9d3afe60e8 (diff)
downloadnfs-utils-8bca04ebcc345784bf2ef29f0781e66157d76558.tar.gz
nfs-utils-8bca04ebcc345784bf2ef29f0781e66157d76558.tar.xz
nfs-utils-8bca04ebcc345784bf2ef29f0781e66157d76558.zip
Currently the "-s" option is ignored by the text-based mount interface. To
notify the kernel that sloppy mount option parsing is needed, add "sloppy" to the string of mount options passed to the kernel. The 2.6.23 - 2.6.26 kernels will fail the mount if "sloppy" is present, as they won't recognize it. To prevent them from ever seeing this option, have the mount command check the kernel version before appending the option. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/mount/stropts.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index c8148c4..34b4134 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -45,6 +45,7 @@
#include "error.h"
#include "network.h"
#include "parse_opt.h"
+#include "version.h"
#ifdef HAVE_RPCSVC_NFS_PROT_H
#include <rpcsvc/nfs_prot.h>
@@ -76,6 +77,7 @@
extern int nfs_mount_data_version;
extern char *progname;
extern int verbose;
+extern int sloppy;
struct nfsmount_info {
const char *spec, /* server:/path */
@@ -287,6 +289,16 @@ static int verify_lock_option(struct mount_options *options)
return 1;
}
+static int nfs_append_sloppy_option(struct mount_options *options)
+{
+ if (!sloppy || linux_version_code() < MAKE_VERSION(2, 6, 27))
+ return 1;
+
+ if (po_append(options, "sloppy") == PO_FAILED)
+ return 0;
+ return 1;
+}
+
/*
* Set up mandatory NFS mount options.
*
@@ -309,6 +321,9 @@ static int nfs_validate_options(struct nfsmount_info *mi)
return 0;
}
+ if (!nfs_append_sloppy_option(mi->options))
+ return 0;
+
if (!append_addr_option(&saddr, mi->options))
return 0;