calls. - Undo mistake in copy order for submount path introduced by rev 11 patch. - add check for alternate libxml2 library for libxml2 tsd workaround. - add check for alternate libtirpc library for libtirpc tsd workaround. - cleanup configure defines for libtirpc. - add WITH_LIBTIRPC to -V status report. - add libtirpc-devel to BuildRequires. - add nfs mount protocol default configuration option.
182 lines
6.6 KiB
Diff
182 lines
6.6 KiB
Diff
autofs-5.0.4 - add nfs mount protocol default configuration option
|
|
|
|
From: Ian Kent <raven@themaw.net>
|
|
|
|
Add configuration option MOUNT_NFS_DEFAULT_PROTOCOL with default of 3.
|
|
Since the default mount protocol used by mount.nfs(8) will change to
|
|
NFS version 4 at some point, and because we can't identify the default
|
|
automatically, we need to be able to set it in our configuration.
|
|
This will only make a difference for replicated map entries as
|
|
availability probing isn't used for single host map entries.
|
|
---
|
|
|
|
CHANGELOG | 1 +
|
|
include/defaults.h | 2 ++
|
|
lib/defaults.c | 15 ++++++++++++++-
|
|
man/auto.master.5.in | 6 ++++++
|
|
modules/mount_nfs.c | 8 +++++---
|
|
redhat/autofs.sysconfig.in | 10 ++++++++++
|
|
samples/autofs.conf.default.in | 10 ++++++++++
|
|
7 files changed, 48 insertions(+), 4 deletions(-)
|
|
|
|
|
|
diff --git a/CHANGELOG b/CHANGELOG
|
|
index ad74b7d..0ce2a56 100644
|
|
--- a/CHANGELOG
|
|
+++ b/CHANGELOG
|
|
@@ -25,6 +25,7 @@
|
|
- add check for alternate libtirpc library for libtirpc tsd workaround.
|
|
- cleanup configure defines for libtirpc.
|
|
- add WITH_LIBTIRPC to -V status report.
|
|
+- add nfs mount protocol default configuration option.
|
|
|
|
4/11/2008 autofs-5.0.4
|
|
-----------------------
|
|
diff --git a/include/defaults.h b/include/defaults.h
|
|
index 9a2430f..9bf16e5 100644
|
|
--- a/include/defaults.h
|
|
+++ b/include/defaults.h
|
|
@@ -37,6 +37,7 @@
|
|
#define DEFAULT_ENTRY_ATTR "cn"
|
|
#define DEFAULT_VALUE_ATTR "nisMapEntry"
|
|
|
|
+#define DEFAULT_NFS_MOUNT_PROTOCOL 3
|
|
#define DEFAULT_APPEND_OPTIONS 1
|
|
#define DEFAULT_AUTH_CONF_FILE AUTOFS_MAP_DIR "/autofs_ldap_auth.conf"
|
|
|
|
@@ -61,6 +62,7 @@ struct ldap_schema *defaults_get_default_schema(void);
|
|
struct ldap_schema *defaults_get_schema(void);
|
|
struct ldap_searchdn *defaults_get_searchdns(void);
|
|
void defaults_free_searchdns(struct ldap_searchdn *);
|
|
+unsigned int defaults_get_mount_nfs_default_proto(void);
|
|
unsigned int defaults_get_append_options(void);
|
|
unsigned int defaults_get_umount_wait(void);
|
|
const char *defaults_get_auth_conf_file(void);
|
|
diff --git a/lib/defaults.c b/lib/defaults.c
|
|
index e507a59..17164bd 100644
|
|
--- a/lib/defaults.c
|
|
+++ b/lib/defaults.c
|
|
@@ -45,6 +45,7 @@
|
|
#define ENV_NAME_ENTRY_ATTR "ENTRY_ATTRIBUTE"
|
|
#define ENV_NAME_VALUE_ATTR "VALUE_ATTRIBUTE"
|
|
|
|
+#define ENV_MOUNT_NFS_DEFAULT_PROTOCOL "MOUNT_NFS_DEFAULT_PROTOCOL"
|
|
#define ENV_APPEND_OPTIONS "APPEND_OPTIONS"
|
|
#define ENV_UMOUNT_WAIT "UMOUNT_WAIT"
|
|
#define ENV_AUTH_CONF_FILE "AUTH_CONF_FILE"
|
|
@@ -326,7 +327,8 @@ unsigned int defaults_read_config(unsigned int to_syslog)
|
|
check_set_config_value(key, ENV_APPEND_OPTIONS, value, to_syslog) ||
|
|
check_set_config_value(key, ENV_UMOUNT_WAIT, value, to_syslog) ||
|
|
check_set_config_value(key, ENV_AUTH_CONF_FILE, value, to_syslog) ||
|
|
- check_set_config_value(key, ENV_MAP_HASH_TABLE_SIZE, value, to_syslog))
|
|
+ check_set_config_value(key, ENV_MAP_HASH_TABLE_SIZE, value, to_syslog) ||
|
|
+ check_set_config_value(key, ENV_MOUNT_NFS_DEFAULT_PROTOCOL, value, to_syslog))
|
|
;
|
|
}
|
|
|
|
@@ -643,6 +645,17 @@ struct ldap_schema *defaults_get_schema(void)
|
|
return schema;
|
|
}
|
|
|
|
+unsigned int defaults_get_mount_nfs_default_proto(void)
|
|
+{
|
|
+ long proto;
|
|
+
|
|
+ proto = get_env_number(ENV_MOUNT_NFS_DEFAULT_PROTOCOL);
|
|
+ if (proto < 2 || proto > 4)
|
|
+ proto = DEFAULT_NFS_MOUNT_PROTOCOL;
|
|
+
|
|
+ return (unsigned int) proto;
|
|
+}
|
|
+
|
|
unsigned int defaults_get_append_options(void)
|
|
{
|
|
int res;
|
|
diff --git a/man/auto.master.5.in b/man/auto.master.5.in
|
|
index 9cc5f02..aaa6324 100644
|
|
--- a/man/auto.master.5.in
|
|
+++ b/man/auto.master.5.in
|
|
@@ -183,6 +183,12 @@ but it is the best we can do.
|
|
.B BROWSE_MODE
|
|
Maps are browsable by default (program default "yes").
|
|
.TP
|
|
+.B MOUNT_NFS_DEFAULT_PROTOCOL
|
|
+Specify the default protocol used by mount.nfs(8) (program default 3). Since
|
|
+we can't identify this default automatically we need to set it in the autofs
|
|
+configuration. This option will only make a difference for replicated map
|
|
+entries as availability probing isn't used for single host map entries.
|
|
+.TP
|
|
.B APPEND_OPTIONS
|
|
Determine whether global options, given on the command line or per mount
|
|
in the master map, are appended to map entry options or if the map entry
|
|
diff --git a/modules/mount_nfs.c b/modules/mount_nfs.c
|
|
index 4f3f514..14d3850 100644
|
|
--- a/modules/mount_nfs.c
|
|
+++ b/modules/mount_nfs.c
|
|
@@ -61,7 +61,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
|
|
char fullpath[PATH_MAX];
|
|
char buf[MAX_ERR_BUF];
|
|
struct host *this, *hosts = NULL;
|
|
- unsigned int vers;
|
|
+ unsigned int mount_default_proto, vers;
|
|
char *nfsoptions = NULL;
|
|
unsigned int random_selection = ap->flags & MOUNT_FLAG_RANDOM_SELECT;
|
|
int len, status, err, existed = 1;
|
|
@@ -130,10 +130,12 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
|
|
nfsoptions, nosymlink, ro);
|
|
}
|
|
|
|
+ mount_default_proto = defaults_get_mount_nfs_default_proto();
|
|
+ vers = NFS_VERS_MASK | NFS_PROTO_MASK;
|
|
if (strcmp(fstype, "nfs4") == 0)
|
|
vers = NFS4_VERS_MASK | TCP_SUPPORTED;
|
|
- else
|
|
- vers = NFS_VERS_MASK | NFS_PROTO_MASK;
|
|
+ else if (mount_default_proto == 4)
|
|
+ vers = vers | NFS4_VERS_MASK;
|
|
|
|
if (!parse_location(ap->logopt, &hosts, what)) {
|
|
info(ap->logopt, MODPREFIX "no hosts available");
|
|
diff --git a/redhat/autofs.sysconfig.in b/redhat/autofs.sysconfig.in
|
|
index fe36f45..04e521c 100644
|
|
--- a/redhat/autofs.sysconfig.in
|
|
+++ b/redhat/autofs.sysconfig.in
|
|
@@ -22,6 +22,16 @@ TIMEOUT=300
|
|
#
|
|
BROWSE_MODE="no"
|
|
#
|
|
+# MOUNT_NFS_DEFAULT_PROTOCOL - specify the default protocol used by
|
|
+# mount.nfs(8). Since we can't identify
|
|
+# the default automatically we need to
|
|
+# set it in our configuration. This will
|
|
+# only make a difference for replicated
|
|
+# map entries as availability probing isn't
|
|
+# used for single host map entries.
|
|
+#
|
|
+#MOUNT_NFS_DEFAULT_PROTOCOL=3
|
|
+#
|
|
# APPEND_OPTIONS - append to global options instead of replace.
|
|
#
|
|
#APPEND_OPTIONS="yes"
|
|
diff --git a/samples/autofs.conf.default.in b/samples/autofs.conf.default.in
|
|
index 4496738..52d18ec 100644
|
|
--- a/samples/autofs.conf.default.in
|
|
+++ b/samples/autofs.conf.default.in
|
|
@@ -22,6 +22,16 @@ TIMEOUT=300
|
|
#
|
|
BROWSE_MODE="no"
|
|
#
|
|
+# MOUNT_NFS_DEFAULT_PROTOCOL - specify the default protocol used by
|
|
+# mount.nfs(8). Since we can't identify
|
|
+# the default automatically we need to
|
|
+# set it in our configuration. This will
|
|
+# only make a difference for replicated
|
|
+# map entries as availability probing isn't
|
|
+# used for single host map entries.
|
|
+#
|
|
+#MOUNT_NFS_DEFAULT_PROTOCOL=3
|
|
+#
|
|
# APPEND_OPTIONS - append to global options instead of replace.
|
|
#
|
|
#APPEND_OPTIONS="yes"
|