Blob Blame History Raw
autofs-5.1.5 - add config option for "ignore" mount option

From: Ian Kent <raven@themaw.net>

Add a configuration option to control whether the autofs pseudo
mount option is used on autofs mounts.

The default setting is "no" to avoid unexpected behaviour and
so is an opt-in setting for those who understand that, if user
space utilities and libraries honour this, then autofs mounts
will be ommitted from mount table listings.

Signed-off-by: Ian Kent <raven@themaw.net>
---
 CHANGELOG                      |    1 +
 include/defaults.h             |    2 ++
 lib/defaults.c                 |   17 +++++++++++++++++
 lib/master.c                   |    3 ++-
 man/autofs.conf.5.in           |    7 +++++++
 redhat/autofs.conf.default.in  |    9 +++++++++
 samples/autofs.conf.default.in |    9 +++++++++
 7 files changed, 47 insertions(+), 1 deletion(-)

--- autofs-5.1.4.orig/CHANGELOG
+++ autofs-5.1.4/CHANGELOG
@@ -62,6 +62,7 @@ xx/xx/2018 autofs-5.1.5
 - fix unlink_mount_tree() not umounting mounts.
 - add ignore mount option.
 - use ignore option for offset mounts as well.
+- add config option for "ignore" mount option
 
 19/12/2017 autofs-5.1.4
 - fix spec file url.
--- autofs-5.1.4.orig/include/defaults.h
+++ autofs-5.1.4/include/defaults.h
@@ -51,6 +51,7 @@
 
 #define DEFAULT_USE_HOSTNAME_FOR_MOUNTS  "0"
 #define DEFAULT_DISABLE_NOT_FOUND_MESSAGE "0"
+#define DEFAULT_USE_IGNORE_MOUNT_OPTION	 "0"
 
 #define DEFAULT_SSS_MASTER_MAP_WAIT	"0"
 #define DEFAULT_USE_MOUNT_REQUEST_LOG_ID "0"
@@ -174,6 +175,7 @@ const char *defaults_get_auth_conf_file(
 unsigned int defaults_get_map_hash_table_size(void);
 unsigned int defaults_use_hostname_for_mounts(void);
 unsigned int defaults_disable_not_found_message(void);
+unsigned int defaults_get_use_ignore_mount_option(void);
 unsigned int defaults_get_sss_master_map_wait(void);
 unsigned int defaults_get_use_mount_request_log_id(void);
 
--- autofs-5.1.4.orig/lib/defaults.c
+++ autofs-5.1.4/lib/defaults.c
@@ -77,6 +77,7 @@
 
 #define NAME_USE_HOSTNAME_FOR_MOUNTS	"use_hostname_for_mounts"
 #define NAME_DISABLE_NOT_FOUND_MESSAGE	"disable_not_found_message"
+#define NAME_USE_IGNORE_MOUNT_OPTION	"use_ignore_mount_option"
 
 #define NAME_SSS_MASTER_MAP_WAIT	"sss_master_map_wait"
 #define NAME_USE_MOUNT_REQUEST_LOG_ID	"use_mount_request_log_id"
@@ -364,6 +365,11 @@ static int conf_load_autofs_defaults(voi
 	if (ret == CFG_FAIL)
 		goto error;
 
+	ret = conf_update(sec, NAME_USE_IGNORE_MOUNT_OPTION,
+			  DEFAULT_USE_IGNORE_MOUNT_OPTION, CONF_ENV);
+	if (ret == CFG_FAIL)
+		goto error;
+
 	ret = conf_update(sec, NAME_SSS_MASTER_MAP_WAIT,
 			  DEFAULT_SSS_MASTER_MAP_WAIT, CONF_ENV);
 	if (ret == CFG_FAIL)
@@ -1863,6 +1869,17 @@ unsigned int defaults_disable_not_found_
 
 	return res;
 }
+
+unsigned int defaults_get_use_ignore_mount_option(void)
+{
+	int res;
+
+	res = conf_get_yesno(autofs_gbl_sec, NAME_USE_IGNORE_MOUNT_OPTION);
+	if (res < 0)
+		res = atoi(DEFAULT_USE_IGNORE_MOUNT_OPTION);
+
+	return res;
+}
 
 unsigned int defaults_get_sss_master_map_wait(void)
 {
--- autofs-5.1.4.orig/lib/master.c
+++ autofs-5.1.4/lib/master.c
@@ -101,7 +101,8 @@ int master_add_autofs_point(struct maste
 		ap->negative_timeout = global_negative_timeout;
 	ap->exp_timeout = defaults_get_timeout();
 	ap->exp_runfreq = 0;
-	ap->flags = MOUNT_FLAG_IGNORE;
+	if (defaults_get_use_ignore_mount_option())
+		ap->flags = MOUNT_FLAG_IGNORE;
 	if (ghost)
 		ap->flags |= MOUNT_FLAG_GHOST;
 
--- autofs-5.1.4.orig/man/autofs.conf.5.in
+++ autofs-5.1.4/man/autofs.conf.5.in
@@ -151,6 +151,13 @@ That produces, IMHO, unnecessary noise i
 has been added to provide the ability to turn it off. The default is "no"
 to maintain the current behaviour.
 .TP
+.B use_ignore_mount_option
+.br
+An option to enable the use of autofs pseudo option "disable". This option
+is used as a hint to user space that the mount entry should be ommitted from
+mount table listings. The default is "no" to avoid unexpected changes in
+behaviour and so is an opt-in setting.
+.TP
 .B sss_master_map_wait
 .br
 Set the time to wait and retry if sssd returns "no such entry" when starting
--- autofs-5.1.4.orig/redhat/autofs.conf.default.in
+++ autofs-5.1.4/redhat/autofs.conf.default.in
@@ -183,6 +183,15 @@ mount_nfs_default_protocol = 4
 #
 #disable_not_found_message = "no"
 #
+# use_ignore_mount_option - This option is used to enable the use of autofs
+#			pseudo option "disable". This option is used as a
+#			hint to user space that the mount entry should be
+#			ommitted from mount table listings. The default is
+#			"no" to avoid unexpected changes in behaviour and
+#			so is an opt-in setting.
+#
+#use_ignore_mount_option = no
+#
 # sss_master_map_wait - When sssd is starting up it can sometimes return
 # 			"no such entry" for a short time until it has read
 # 			in the LDAP map information. Internal default is 0
--- autofs-5.1.4.orig/samples/autofs.conf.default.in
+++ autofs-5.1.4/samples/autofs.conf.default.in
@@ -182,6 +182,15 @@ browse_mode = no
 #
 #disable_not_found_message = "no"
 #
+# use_ignore_mount_option - This option is used to enable the use of autofs
+#			pseudo option "disable". This option is used as a
+#			hint to user space that the mount entry should be
+#			ommitted from mount table listings. The default is
+#			"no" to avoid unexpected changes in behaviour and
+#			so is an opt-in setting.
+#
+#use_ignore_mount_option = no
+#
 # sss_master_map_wait - When sssd is starting up it can sometimes return
 #			"no such entry" for a short time until it has read
 # 			in the LDAP map information. Internal default is 0