From: Ian Kent <raven@themaw.net>
To: autofs mailing list <autofs@vger.kernel.org>
Subject: [PATCH 26/37] autofs-5.1.2 - add sss master map wait config option
Date: Tue, 25 Oct 2016 09:19:43 +0800 [thread overview]
Message-ID: <20161025011943.7778.46286.stgit@pluto.themaw.net> (raw)
In-Reply-To: <20161025010014.7778.69274.stgit@pluto.themaw.net>
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. This affects
reading the master map at autofs startup and results in no automount
mounts if sssd is the primary map source.
This problem should be resolved in sssd but it's a problem for the
moment so a configuration option, sss_master_map_wait, has been added
to work around it.
The internal program default is 0, don't wait but the installed
configuration sets this to 10 seconds to work around the problem.
Signed-off-by: Ian Kent <raven@themaw.net>
---
CHANGELOG | 1 +
include/defaults.h | 3 +++
lib/defaults.c | 18 ++++++++++++++++++
man/autofs.conf.5.in | 7 +++++++
modules/lookup_sss.c | 7 ++++---
redhat/autofs.conf.default.in | 10 ++++++++++
samples/autofs.conf.default.in | 10 ++++++++++
7 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 90688e6..e89086b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -23,6 +23,7 @@ xx/xx/2016 autofs-5.1.3
- wait for master map available at start.
- add master read wait option.
- work around sss startup delay.
+- add sss master map wait config option.
15/06/2016 autofs-5.1.2
=======================
diff --git a/include/defaults.h b/include/defaults.h
index 80db18d..1dea48c 100644
--- a/include/defaults.h
+++ b/include/defaults.h
@@ -51,6 +51,8 @@
#define DEFAULT_USE_HOSTNAME_FOR_MOUNTS "0"
#define DEFAULT_DISABLE_NOT_FOUND_MESSAGE "0"
+#define DEFAULT_SSS_MASTER_MAP_WAIT "0"
+
/* Config entry flags */
#define CONF_NONE 0x00000000
#define CONF_ENV 0x00000001
@@ -169,6 +171,7 @@ const char *defaults_get_auth_conf_file(void);
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_sss_master_map_wait(void);
unsigned int conf_amd_mount_section_exists(const char *);
char *conf_amd_get_arch(void);
diff --git a/lib/defaults.c b/lib/defaults.c
index 5fa4a2b..3ac231b 100644
--- a/lib/defaults.c
+++ b/lib/defaults.c
@@ -77,6 +77,8 @@
#define NAME_USE_HOSTNAME_FOR_MOUNTS "use_hostname_for_mounts"
#define NAME_DISABLE_NOT_FOUND_MESSAGE "disable_not_found_message"
+#define NAME_SSS_MASTER_MAP_WAIT "sss_master_map_wait"
+
#define NAME_AMD_ARCH "arch"
#define NAME_AMD_AUTO_ATTRCACHE "auto_attrcache"
#define NAME_AMD_AUTO_DIR "auto_dir"
@@ -354,6 +356,11 @@ static int conf_load_autofs_defaults(void)
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)
+ goto error;
+
/* LDAP_URI and SEARCH_BASE can occur multiple times */
while ((co = conf_lookup(sec, NAME_LDAP_URI)))
conf_delete(co->section, co->name);
@@ -1753,6 +1760,17 @@ unsigned int defaults_disable_not_found_message(void)
return res;
}
+unsigned int defaults_get_sss_master_map_wait(void)
+{
+ int res;
+
+ res = conf_get_yesno(autofs_gbl_sec, NAME_SSS_MASTER_MAP_WAIT);
+ if (res < 0)
+ res = atoi(DEFAULT_SSS_MASTER_MAP_WAIT);
+
+ return res;
+}
+
unsigned int conf_amd_mount_section_exists(const char *section)
{
return conf_section_exists(section);
diff --git a/man/autofs.conf.5.in b/man/autofs.conf.5.in
index 466db10..93ff7af 100644
--- a/man/autofs.conf.5.in
+++ b/man/autofs.conf.5.in
@@ -141,6 +141,13 @@ The original request to add this log message needed it to be unconditional.
That produces, IMHO, unnecessary noise in the log so a configuration option
has been added to provide the ability to turn it off. The default is "no"
to maintain the current behaviour.
+.TP
+.B sss_master_map_wait
+.br
+Set the time to wait and retry if sssd returns "no such entry" when starting
+up. 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. Default is 0 seconds,
+don't wait.
.SS LDAP Configuration
.P
Configuration settings available are:
diff --git a/modules/lookup_sss.c b/modules/lookup_sss.c
index 702e7b5..ce4d0ed 100644
--- a/modules/lookup_sss.c
+++ b/modules/lookup_sss.c
@@ -32,8 +32,6 @@
/* Half a second between retries */
#define SETAUTOMOUNTENT_MASTER_INTERVAL 500000000
-/* Try for 10 seconds */
-#define SETAUTOMOUNTENT_MASTER_RETRIES 10 * 2
#define MODPREFIX "lookup(sss): "
@@ -304,7 +302,10 @@ int lookup_read_master(struct master *master, time_t age, void *context)
if (ret != ENOENT)
return NSS_STATUS_UNAVAIL;
- retries = SETAUTOMOUNTENT_MASTER_RETRIES;
+ retries = defaults_get_sss_master_map_wait() * 2;
+ if (retries <= 0)
+ return NSS_STATUS_NOTFOUND;
+
ret = setautomntent_wait(logopt,
ctxt, ctxt->mapname, &sss_ctxt,
retries);
diff --git a/redhat/autofs.conf.default.in b/redhat/autofs.conf.default.in
index 2fa8a4c..9bceab3 100644
--- a/redhat/autofs.conf.default.in
+++ b/redhat/autofs.conf.default.in
@@ -166,6 +166,16 @@ mount_nfs_default_protocol = 4
#
#disable_not_found_message = "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
+# seconds, don't wait but if there is a problem with
+# autofs not finding the master map at startup (when
+# it should) then try setting this to 10 to work
+# around it.
+#
+#sss_master_map_wait = 0
+#
# Otions for the amd parser within autofs.
#
# amd configuration options that are aren't used, haven't been
diff --git a/samples/autofs.conf.default.in b/samples/autofs.conf.default.in
index 77c5999..a275e08 100644
--- a/samples/autofs.conf.default.in
+++ b/samples/autofs.conf.default.in
@@ -165,6 +165,16 @@ browse_mode = no
#
#disable_not_found_message = "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
+# seconds, don't wait but if there is a problem with
+# autofs not finding the master map at startup (when
+# it should) then try setting this to 10 to work
+# around it.
+#
+#sss_master_map_wait = 0
+#
# Otions for the amd parser within autofs.
#
# amd configuration options that are aren't used, haven't been
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
next prev parent reply other threads:[~2016-10-25 1:19 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-25 1:17 [PATCH 00/37] Current patch queue for review Ian Kent
2016-10-25 1:17 ` [PATCH 01/37] autofs-5.1.2 - fix release date in CHANGELOG Ian Kent
2016-10-25 1:17 ` [PATCH 02/37] autofs-5.1.2 - build: check for clock_gettime in librt Ian Kent
2016-10-25 1:17 ` [PATCH 03/37] autofs-5.1.2 - Fix compiler warning in try_remount() Ian Kent
2016-10-25 1:17 ` [PATCH 04/37] autofs-5.1.2 - Drop redundant \n in logerr() Ian Kent
2016-10-25 1:17 ` [PATCH 05/37] autofs-5.1.2 - Fix size arg of fgets(3) Ian Kent
2016-10-25 1:17 ` [PATCH 06/37] autofs-5.1.2 - fix libtirpc detection with -Wl, --as-needed Ian Kent
2016-10-25 1:18 ` [PATCH 07/37] autofs-5.1.2 - Fix a typo in CREDITS Ian Kent
2016-10-25 1:18 ` [PATCH 08/37] autofs-5.1.2 - Change .requestor to .requester for consistency Ian Kent
2016-10-25 1:18 ` [PATCH 09/37] autofs-5.1.2 - fix file map changed check Ian Kent
2016-10-25 1:18 ` [PATCH 10/37] autofs-5.1.2 - Remove unused local 2KB buffer Ian Kent
2016-10-25 1:18 ` [PATCH 11/37] autofs-5.1.2 - Fix typos in error messages Ian Kent
2016-10-25 1:18 ` [PATCH 12/37] autofs-5.1.2 - Fix fgets(3) size argument (another one) Ian Kent
2016-10-25 1:18 ` [PATCH 13/37] autofs-5.1.2 - fix short memory allocation in lookup_amd_instance() Ian Kent
2016-10-25 1:18 ` [PATCH 14/37] autofs-5.1.2 - fix count_mounts() function Ian Kent
2016-10-25 1:18 ` [PATCH 15/37] autofs-5.1.2 - configure: add cache variable for Linux proc filesystem check Ian Kent
2016-10-25 1:18 ` [PATCH 16/37] autofs-5.1.2 - Avoid local variable name shadowing another Ian Kent
2016-10-25 1:18 ` [PATCH 17/37] autofs-5.1.2 - fix typo in MOUNT_FLAG_GHOST comment Ian Kent
2016-10-25 1:19 ` [PATCH 18/37] autofs-5.1.2 - fix cachefs parse message not being logged Ian Kent
2016-10-25 1:19 ` [PATCH 19/37] autofs-5.1.2 - fix argc off by one in mount_autofs.c Ian Kent
2016-10-25 1:19 ` [PATCH 20/37] autofs-5.1.2 - fix _strncmp() usage Ian Kent
2016-10-25 1:19 ` [PATCH 21/37] autofs-5.1.1 - fix create_client() RPC client handling Ian Kent
2016-10-25 1:19 ` [PATCH 22/37] autofs-5.1.2 - update and add README for old autofs schema Ian Kent
2016-10-25 1:19 ` [PATCH 23/37] autofs-5.1.2 - wait for master map available at start Ian Kent
2016-10-25 1:19 ` [PATCH 24/37] autofs-5.1.2 - add master read wait option Ian Kent
2016-10-25 1:19 ` [PATCH 25/37] autofs-5.1.2 - work around sss startup delay Ian Kent
2016-10-25 1:19 ` Ian Kent [this message]
2016-10-25 1:19 ` [PATCH 27/37] autofs-5.1.2 - fix typos in README.amd-maps Ian Kent
2016-10-25 1:19 ` [PATCH 28/37] autofs-5.1.2 - add ref counting to struct map_source Ian Kent
2016-10-25 1:19 ` [PATCH 29/37] autofs-5.1.2 - add support for amd browsable option Ian Kent
2016-10-25 1:20 ` [PATCH 30/37] autofs-5.1.2 - add function conf_amd_get_map_name() Ian Kent
2016-10-25 1:20 ` [PATCH 31/37] autofs-5.1.2 - add function conf_amd_get_mount_paths() Ian Kent
2016-10-25 1:20 ` [PATCH 32/37] autofs-5.1.2 - include amd mount section mounts in master mounts list Ian Kent
2016-10-25 1:20 ` [PATCH 33/37] autofs-5.1.2 - check for conflicting amd section mounts Ian Kent
2016-10-25 1:20 ` [PATCH 34/37] autofs-5.1.2 - add function conf_get_map_options() Ian Kent
2016-10-25 1:20 ` [PATCH 35/37] autofs-5.1.2 - capture cache option and its settings during parsing Ian Kent
2016-10-25 1:20 ` [PATCH 36/37] autofs-5.1.2 - handle map_option cache for top level mounts Ian Kent
2016-10-25 1:20 ` [PATCH 37/37] autofs-5.1.2 - handle amd cache option all in amd type auto mounts Ian Kent
2016-11-04 8:53 ` [PATCH 00/37] Current patch queue for review Ian Kent
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=20161025011943.7778.46286.stgit@pluto.themaw.net \
--to=raven@themaw.net \
--cc=autofs@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.