Current patch queue for review
Subsystems (3)
Ian Kent
maintainercover Current patch queue for review
Hi all,
The patch queue is well overdue for a commit but since there's been increased contributions for others recently I thought it would be useful to post the patches for review and give a brief description of what's in the queue and what still needs work.
Many of the patches are striaght forward and I expect to commit then in a week or so. Also keep in mind the commit order might be different when the commit is actually done.
The patches around those titled "autofs-5.1.2 - wait for master map available at start" and "autofs-5.1.2 - add master read wait option" have been around for quite a while and have been a problem in the past (which is why they haven't been committed yet) so I'm not sure about them yet.
The series to add browse support for amd maps is not yet complete so they will likely stay in the queue a bit longer. But I am keen to get this functionality into a release as I know it is something that at least a few people would like.
Anyway review of the patches would be appreciated.
---
Gustavo Zacarias (1):
autofs-5.1.2 - build: check for clock_gettime in librt
Ian Kent (25):
autofs-5.1.2 - fix release date in CHANGELOG
autofs-5.1.2 - fix file map changed check
autofs-5.1.2 - fix short memory allocation in lookup_amd_instance() autofs-5.1.2 - fix count_mounts() function
autofs-5.1.2 - fix typo in MOUNT_FLAG_GHOST comment autofs-5.1.2 - fix cachefs parse message not being logged autofs-5.1.2 - fix argc off by one in mount_autofs.c autofs-5.1.2 - fix _strncmp() usage
autofs-5.1.1 - fix create_client() RPC client handling autofs-5.1.2 - update and add README for old autofs schema autofs-5.1.2 - wait for master map available at start autofs-5.1.2 - add master read wait option
autofs-5.1.2 - work around sss startup delay
autofs-5.1.2 - add sss master map wait config option autofs-5.1.2 - fix typos in README.amd-maps
autofs-5.1.2 - add ref counting to struct map_source autofs-5.1.2 - add support for amd browsable option autofs-5.1.2 - add function conf_amd_get_map_name() autofs-5.1.2 - add function conf_amd_get_mount_paths() autofs-5.1.2 - include amd mount section mounts in master mounts list autofs-5.1.2 - check for conflicting amd section mounts autofs-5.1.2 - add function conf_get_map_options() autofs-5.1.2 - capture cache option and its settings during parsing autofs-5.1.2 - handle map_option cache for top level mounts autofs-5.1.2 - handle amd cache option all in amd type auto mounts
Martin von Gagern (1):
autofs-5.1.2 - fix libtirpc detection with -Wl,--as-needed
Thomas Petazzoni (1):
autofs-5.1.2 - configure: add cache variable for Linux proc filesystem check
Tomohiro Kusumi (9):
autofs-5.1.2 - Fix compiler warning in try_remount() autofs-5.1.2 - Drop redundant \n in logerr() autofs-5.1.2 - Fix size arg of fgets(3) autofs-5.1.2 - Fix a typo in CREDITS
autofs-5.1.2 - Change .requestor to .requester for consistency autofs-5.1.2 - Remove unused local 2KB buffer autofs-5.1.2 - Fix typos in error messages autofs-5.1.2 - Fix fgets(3) size argument (another one) autofs-5.1.2 - Avoid local variable name shadowing another
CHANGELOG | 40 ++++++++ CREDITS | 2 Makefile.conf.in | 3 + Makefile.rules | 2 README.amd-maps | 64 ++++++++++--- README.autofs-schema | 18 ++++ aclocal.m4 | 21 ++-- configure | 66 +++++++++++-- configure.in | 4 + daemon/automount.c | 107 +++++++++++++++++---- daemon/indirect.c | 7 + daemon/lookup.c | 116 +++++++++++++++++++---- daemon/module.c | 4 - daemon/state.c | 4 - include/automount.h | 9 +- include/defaults.h | 8 ++ include/dev-ioctl-lib.h | 2 include/master.h | 4 + include/parse_amd.h | 7 + lib/defaults.c | 137 +++++++++++++++++++++++++++ lib/dev-ioctl-lib.c | 10 +- lib/master.c | 202 ++++++++++++++++++++++++++++++++++++++++ lib/master_parse.y | 30 +++++- lib/mounts.c | 9 +- lib/nss_parse.y | 2 lib/rpc_subs.c | 21 ++-- man/autofs.conf.5.in | 27 +++++ man/automount.8 | 4 + modules/amd_parse.y | 16 ++- modules/amd_tok.l | 2 modules/lookup_file.c | 15 ++- modules/lookup_ldap.c | 10 +- modules/lookup_nisplus.c | 24 +++-- modules/lookup_sss.c | 72 +++++++++++++- modules/lookup_yp.c | 23 +++-- modules/mount_autofs.c | 84 +++++++++++------ modules/mount_ext2.c | 2 modules/parse_amd.c | 2 redhat/autofs.conf.default.in | 24 ++++- samples/autofs.conf.default.in | 24 ++++- samples/autofs.schema | 24 ++--- 41 files changed, 1042 insertions(+), 210 deletions(-) create mode 100644 README.autofs-schema
--
Ian
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 1/37 autofs-5.1.2 - fix release date in CHANGELOG
Oops!
Also add heading for 5.1.3.
--- CHANGELOG | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
CHANGELOG +5 -1
@@ -1,4 +1,8 @@ -15/06/2015 autofs-5.1.2 +xx/xx/2016 autofs-5.1.3 +======================= +- fix release date in CHANGELOG. + +15/06/2016 autofs-5.1.2 ======================= - update libtirpc workaround for new soname. - revert fix libtirpc name clash.
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 2/37 autofs-5.1.2 - build: check for clock_gettime in librt
In reply to Ian KentFrom: Gustavo Zacarias <[email protected]>
Glibc versions older than 2.17 define clock_gettime() in librt, so add a check for this.
--- CHANGELOG | 1 + Makefile.conf.in | 3 +++ Makefile.rules | 2 ++ configure | 44 ++++++++++++++++++++++++++++++++++++++++++++ configure.in | 4 ++++ 5 files changed, 54 insertions(+)
CHANGELOG +1 -0
@@ -1,6 +1,7 @@ xx/xx/2016 autofs-5.1.3 ======================= - fix release date in CHANGELOG. +- build: check for clock_gettime in librt. 15/06/2016 autofs-5.1.2 =======================
Makefile.conf.in +3 -0
@@ -11,6 +11,9 @@ DAEMON_CFLAGS = @DAEMON_CFLAGS@ DAEMON_LDFLAGS = @DAEMON_LDFLAGS@ +# Glibc < 2.17 requires librt for clock_gettime() +LIBCLOCK_GETTIME = @LIBCLOCK_GETTIME@ + # Special parameters for glibc (libc 6) LIBNSL = @LIBNSL@ LIBRESOLV = @LIBRESOLV@
Makefile.rules +2 -0
@@ -56,6 +56,8 @@ endif LIBS += $(LIBNSL) +LIBS += $(LIBCLOCK_GETTIME) + # Standard rules .SUFFIXES: .c .o .s .so
configure +44 -0
56 lines not on this page · raw message
configure.in +4 -0
@@ -177,6 +177,10 @@ if test "$ac_cv_search_versionsort" = "no"; then [Define if your C library does not provide versionsort]) fi +# glibc < 2.17 needs librt for clock_gettime() +AC_CHECK_LIB(rt, clock_gettime, LIBCLOCK_GETTIME="-lrt") +AC_SUBST(LIBCLOCK_GETTIME) + # # glibc/libc 6 new libraries #
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 3/37 autofs-5.1.2 - Fix compiler warning in try_remount()
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
Fix below compiler (gcc5) warning which isn't autoconf result dependent. mounts.c:1779:7: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
--- CHANGELOG | 1 + lib/mounts.c | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-)
CHANGELOG +1 -0
@@ -2,6 +2,7 @@ xx/xx/2016 autofs-5.1.3 ======================= - fix release date in CHANGELOG. - build: check for clock_gettime in librt. +- fix compiler warning in try_remount(). 15/06/2016 autofs-5.1.2 =======================
lib/mounts.c +2 -3
@@ -1776,16 +1776,15 @@ static int remount_active_mount(struct autofs_point *ap, *ioctlfd =-1 ; } }else { -int ret;/* * What can I do if we can't remount the existing * mount(s) (possibly a partial failure), everything * following will be broken? */ if (type == t_indirect) - ret =do_remount_indirect (ap, fd, path); +do_remount_indirect (ap, fd, path);else - ret =do_remount_direct (ap, fd, path); +do_remount_direct (ap, fd, path); }debug (ap->logopt,"re-connected to mount %s" , path);
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 4/37 autofs-5.1.2 - Drop redundant \n in logerr()
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
Line break isn't necessary from the way logerr (and logmsg) is implemented, and these two probably aren't intentional.
--- CHANGELOG | 1 + daemon/module.c | 2 +- lib/nss_parse.y | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-)
CHANGELOG +1 -0
@@ -3,6 +3,7 @@ xx/xx/2016 autofs-5.1.3 - fix release date in CHANGELOG. - build: check for clock_gettime in librt. - fix compiler warning in try_remount(). +- drop redundant \n in logerr(). 15/06/2016 autofs-5.1.2 =======================
daemon/module.c +1 -1
@@ -34,7 +34,7 @@ int load_autofs4_module(void)*/ fp =open_fopen_r ("/proc/filesystems" );if (!fp) { -logerr ("cannot open /proc/filesystems\n" ); +logerr ("cannot open /proc/filesystems" );return 0 ; }
lib/nss_parse.y +1 -1
@@ -169,7 +169,7 @@ int nsswitch_parse(struct list_head *list) nsswitch = open_fopen_r(NSSWITCH_FILE); if (!nsswitch) { - logerr("couldn't open %s\n", NSSWITCH_FILE); + logerr("couldn't open %s", NSSWITCH_FILE); return 1; }
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 5/37 autofs-5.1.2 - Fix size arg of fgets(3)
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
Since fgets(3) reads at most 1 less than size arg, it should probably pass MAX_LINE_LEN+1 given that the conditional in the next line tests if strlen() exceeds MAX_LINE_LEN. (i.e. MAX_LINE_LEN isn't designed to include terminating \0)
buf has MAX_LINE_LEN+2 bytes, so passing MAX_LINE_LEN+1 is ok.
--- CHANGELOG | 1 + lib/defaults.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
CHANGELOG +1 -0
@@ -4,6 +4,7 @@ xx/xx/2016 autofs-5.1.3 - build: check for clock_gettime in librt. - fix compiler warning in try_remount(). - drop redundant \n in logerr(). +- Fix size arg of fgets(3). 15/06/2016 autofs-5.1.2 =======================
lib/defaults.c +1 -1
@@ -879,7 +879,7 @@ static int read_config(unsigned int to_syslog, FILE *f, const char *name)char *res; new_sec =NULL ; -while ((res =fgets (buf,MAX_LINE_LEN , f))) { +while ((res =fgets (buf,MAX_LINE_LEN +1 , f))) {char *sec, *key, *value;if (strlen (res) >MAX_LINE_LEN ) {
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 6/37 autofs-5.1.2 - fix libtirpc detection with -Wl, --as-needed
In reply to Ian KentFrom: Martin von Gagern <[email protected]>
As reported in https://bugs.gentoo.org/show_bug.cgi?id=588106, the configure script will fail to detect the presence of libtirpc if -Wl,--as-needed is included in LDFLAGS. That is because the check incorrectly includes the argument -ltircp in the LDFLAGS variable, instead of the LIBS variable where it belongs. LIBS comes after the objects so it will be used to satisfy their dependencies. LDFLAGS will come before them, causing the library to be skipped if the --as-needed linker flag is in effect.
--- CHANGELOG | 1 + aclocal.m4 | 6 +++--- configure | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-)
CHANGELOG +1 -0
@@ -5,6 +5,7 @@ xx/xx/2016 autofs-5.1.3 - fix compiler warning in try_remount(). - drop redundant \n in logerr(). - Fix size arg of fgets(3). +- fix libtirpc detection with -Wl,--as-needed. 15/06/2016 autofs-5.1.2 =======================
aclocal.m4 +3 -3
@@ -413,9 +413,9 @@ AC_DEFUN([AF_CHECK_LIBTIRPC], [ # save current flags af_check_libtirpc_save_cflags="$CFLAGS" -af_check_libtirpc_save_ldflags="$LDFLAGS" +af_check_libtirpc_save_libs="$LIBS" CFLAGS="$CFLAGS -I/usr/include/tirpc" -LDFLAGS="$LDFLAGS -ltirpc" +LIBS="$LIBS -ltirpc" AC_TRY_LINK( [ #include <rpc/rpc.h> ],
@@ -438,7 +438,7 @@ AC_CHECK_FUNCS([getrpcbyname getservbyname]) # restore flags CFLAGS="$af_check_libtirpc_save_cflags" -LDFLAGS="$af_check_libtirpc_save_ldflags" +LIBS="$af_check_libtirpc_save_libs" ]) AC_DEFUN([AF_WITH_LIBTIRPC],
configure +3 -3
@@ -3195,9 +3195,9 @@ if test "${with_libtirpc+set}" = set; then : # save current flags af_check_libtirpc_save_cflags="$CFLAGS" -af_check_libtirpc_save_ldflags="$LDFLAGS" +af_check_libtirpc_save_libs="$LIBS" CFLAGS="$CFLAGS -I/usr/include/tirpc" -LDFLAGS="$LDFLAGS -ltirpc" +LIBS="$LIBS -ltirpc" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */
@@ -3250,7 +3250,7 @@ done # restore flags CFLAGS="$af_check_libtirpc_save_cflags" -LDFLAGS="$af_check_libtirpc_save_ldflags" +LIBS="$af_check_libtirpc_save_libs" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 7/37 autofs-5.1.2 - Fix a typo in CREDITS
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
Fix a typo in a contributor's name.
Two other parts of this file says "Aaron".
--- CHANGELOG | 1 + CREDITS | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
CHANGELOG +1 -0
@@ -6,6 +6,7 @@ xx/xx/2016 autofs-5.1.3 - drop redundant \n in logerr(). - Fix size arg of fgets(3). - fix libtirpc detection with -Wl,--as-needed. +- Fix a typo in CREDITS. 15/06/2016 autofs-5.1.2 =======================
CREDITS +1 -1
@@ -2,7 +2,7 @@ CREDITS ======= -Arron Ogden +Aaron Ogden ----------- While other people have contributed to autofs in various ways
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 8/37 autofs-5.1.2 - Change .requestor to .requester for consistency
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
Since the name of ioctl command is AUTOFS_DEV_IOCTL_REQUESTER, we should use .requester for consistency, assuming autofs userspace doesn't have intention to provide these interface for external programs or libraries which break api compatibiliy.
Also note that kernel code of autofs uses "requester".
--- CHANGELOG | 1 + daemon/automount.c | 2 +- include/automount.h | 4 ++-- include/dev-ioctl-lib.h | 2 +- lib/dev-ioctl-lib.c | 10 +++++----- lib/mounts.c | 4 ++-- 6 files changed, 12 insertions(+), 11 deletions(-)
CHANGELOG +1 -0
@@ -7,6 +7,7 @@ xx/xx/2016 autofs-5.1.3 - Fix size arg of fgets(3). - fix libtirpc detection with -Wl,--as-needed. - Fix a typo in CREDITS. +- Change .requestor to .requester for consistency. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +1 -1
@@ -238,7 +238,7 @@ int rmdir_path(struct autofs_point *ap, const char *path, dev_t dev)crit (ap->logopt,"attempt to remove directory from a " "non-autofs filesystem!" );crit (ap->logopt, -"requestor dev == %llu, \"%s\" owner dev == %llu" , +"requester dev == %llu, \"%s\" owner dev == %llu" , dev, buf, st.st_dev);return -1 ; }
include/automount.h +2 -2
@@ -425,8 +425,8 @@ struct pending_args {char name[PATH_MAX ];/* Name field of the request */ dev_t dev;/* device number of mount */ unsigned int len;/* Name field len */ -uid_t uid;/* uid of requestor */ -gid_t gid;/* gid of requestor */ +uid_t uid;/* uid of requester */ +gid_t gid;/* gid of requester */ unsigned long wait_queue_token;/* Associated kernel wait token */ };
include/dev-ioctl-lib.h +1 -1
@@ -46,7 +46,7 @@ struct ioctl_ops {int (*setpipefd)(unsigned int ,int ,int );int (*catatonic)(unsigned int ,int );int (*timeout)(unsigned int ,int ,time_t ); -int (*requestor)(unsigned int ,int ,const char *,uid_t *,gid_t *); +int (*requester)(unsigned int ,int ,const char *,uid_t *,gid_t *);int (*expire)(unsigned int ,int ,const char *,unsigned int );int (*askumount)(unsigned int ,int ,unsigned int *);int (*ismountpoint)(unsigned int ,int ,const char *,unsigned int *);
lib/dev-ioctl-lib.c +5 -5
@@ -56,7 +56,7 @@ static int dev_ioctl_send_fail(unsigned int, int, unsigned int, int);static int dev_ioctl_setpipefd (unsigned int ,int ,int );static int dev_ioctl_catatonic (unsigned int ,int );static int dev_ioctl_timeout (unsigned int ,int ,time_t ); -static int dev_ioctl_requestor (unsigned int ,int ,const char *,uid_t *,gid_t *); +static int dev_ioctl_requester (unsigned int ,int ,const char *,uid_t *,gid_t *);static int dev_ioctl_expire (unsigned int ,int ,const char *,unsigned int );static int dev_ioctl_askumount (unsigned int ,int ,unsigned int *);static int dev_ioctl_ismountpoint (unsigned int ,int ,const char *,unsigned int *);
@@ -85,7 +85,7 @@ static struct ioctl_ops dev_ioctl_ops = { .setpipefd = dev_ioctl_setpipefd, .catatonic = dev_ioctl_catatonic, .timeout = dev_ioctl_timeout, - .requestor = dev_ioctl_requestor, + .requester = dev_ioctl_requester, .expire = dev_ioctl_expire, .askumount = dev_ioctl_askumount, .ismountpoint = dev_ioctl_ismountpoint
@@ -103,7 +103,7 @@ static struct ioctl_ops ioctl_ops = { .setpipefd = NULL, .catatonic = ioctl_catatonic, .timeout = ioctl_timeout, - .requestor = NULL, + .requester = NULL, .expire = ioctl_expire, .askumount = ioctl_askumount, .ismountpoint = NULL
@@ -261,7 +261,7 @@ static void free_dev_ioctl_open(struct autofs_dev_ioctl *ioctl)/* * Allocate a parameter struct for misc device ioctl which includes -* a path. This is used when getting the last mount requestor uid +* a path. This is used when getting the last mount requester uid * and gid and when checking if a path within the autofs filesystem * is a mount point. We add the path to the end of the struct. */
@@ -607,7 +607,7 @@ static int ioctl_timeout(unsigned int logopt, int ioctlfd, time_t timeout)* process uid and gid (or string variations of them) for mount * lookups within the map entry. */ -static int dev_ioctl_requestor (unsigned int logopt, +static int dev_ioctl_requester (unsigned int logopt,int ioctlfd,const char *path,uid_t *uid,gid_t *gid) {
lib/mounts.c +2 -2
@@ -1602,7 +1602,7 @@ static int do_remount_direct(struct autofs_point *ap, int fd, const char *path)gid_t gid;int ret; - ops->requestor (ap->logopt, fd, path, &uid, &gid); + ops->requester (ap->logopt, fd, path, &uid, &gid);if (uid !=-1 && gid !=-1 )set_tsd_user_vars (ap->logopt, uid, gid);
@@ -1671,7 +1671,7 @@ static int do_remount_indirect(struct autofs_point *ap, int fd, const char *path } } - ops->requestor (ap->logopt, fd, buf, &uid, &gid); + ops->requester (ap->logopt, fd, buf, &uid, &gid);if (uid !=-1 && gid !=-1 )set_tsd_user_vars (ap->logopt, uid, gid);
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 9/37 autofs-5.1.2 - fix file map changed check
In reply to Ian KentThe CLOCK_MONOTONIC time cannot be used to file status times, time(2) must be used instead.
--- CHANGELOG | 1 + modules/lookup_file.c | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-)
CHANGELOG +1 -0
@@ -8,6 +8,7 @@ xx/xx/2016 autofs-5.1.3 - fix libtirpc detection with -Wl,--as-needed. - Fix a typo in CREDITS. - Change .requestor to .requester for consistency. +- fix file map changed check. 15/06/2016 autofs-5.1.2 =======================
modules/lookup_file.c +4 -5
@@ -45,6 +45,7 @@ struct lookup_context {const char *mapname;int opts_argc;const char **opts_argv; +time_t last_read;struct parse_mod *parse; };
@@ -783,6 +784,7 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context) } source->age = age; + ctxt->last_read =time (NULL );fclose (f);
@@ -1076,7 +1078,7 @@ static int check_map_indirect(struct autofs_point *ap,static int map_update_needed (struct autofs_point *ap,struct map_source *source, -struct lookup_context * ctxt) +struct lookup_context *ctxt) {struct mapent_cache *mc;struct mapent *me;
@@ -1097,9 +1099,7 @@ static int map_update_needed(struct autofs_point *ap,return -1 ; } -cache_readlock (mc); - me =cache_lookup_first (mc); -if (me && st.st_mtime <= me->age) { +if (st.st_mtime <= ctxt->last_read) {/* * If any map instances are present for this source * then either we have plus included entries or we
@@ -1116,7 +1116,6 @@ static int map_update_needed(struct autofs_point *ap, ret =0 ; }else source->stale =1 ; -cache_unlock (mc);return ret; }
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 10/37 autofs-5.1.2 - Remove unused local 2KB buffer
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
--- CHANGELOG | 1 + daemon/automount.c | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-)
CHANGELOG +1 -0
@@ -9,6 +9,7 @@ xx/xx/2016 autofs-5.1.3 - Fix a typo in CREDITS. - Change .requestor to .requester for consistency. - fix file map changed check. +- Remove unused local 2KB buffer. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +0 -3
@@ -1901,7 +1901,6 @@ static void usage(void)static void show_build_info (void ) { -char buf[2048 ];int count =0 ;printf ("\nLinux automount version %s\n" , version);
@@ -1913,8 +1912,6 @@ static void show_build_info(void)printf ("\nCompile options:\n " ); -memset (buf,0 ,2048 ); -#ifndef ENABLE_MOUNT_LOCKING printf ("DISABLE_MOUNT_LOCKING " ); count =22 ;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 11/37 autofs-5.1.2 - Fix typos in error messages
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
--- CHANGELOG | 1 + daemon/automount.c | 4 ++-- daemon/state.c | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-)
CHANGELOG +1 -0
@@ -10,6 +10,7 @@ xx/xx/2016 autofs-5.1.3 - Change .requestor to .requester for consistency. - fix file map changed check. - Remove unused local 2KB buffer. +- Fix typos in error messages. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +2 -2
@@ -945,7 +945,7 @@ static int set_log_priority(const char *path, int priority)if (priority >LOG_DEBUG || priority <LOG_EMERG ) {fprintf (stderr,"Log priority %d is invalid.\n" , priority); -fprintf (stderr,"Please spcify a number in the range 0-7.\n" ); +fprintf (stderr,"Please specify a number in the range 0-7.\n" );return -1 ; }
@@ -1078,7 +1078,7 @@ int do_expire(struct autofs_point *ap, const char *name, int namelen) }if (!len) { -crit (ap->logopt,"path to long for buffer" ); +crit (ap->logopt,"path too long for buffer" );return 1 ; }
daemon/state.c +2 -2
@@ -575,7 +575,7 @@ static unsigned int st_readmap(struct autofs_point *ap) ra =malloc (sizeof (struct readmap_args ));if (!ra) { -error (ap->logopt,"failed to malloc reamap cond struct" ); +error (ap->logopt,"failed to malloc readmap cond struct" );/* It didn't work: return to ready */ st_ready (ap);if (!ap->submount)
@@ -600,7 +600,7 @@ static unsigned int st_readmap(struct autofs_point *ap) status =pthread_create (&thid, &th_attr_detached, do_readmap, ra);if (status) { -error (ap->logopt,"read map thread create failed" ); +error (ap->logopt,"readmap thread create failed" );st_readmap_cleanup (ra);free (ra);/* It didn't work: return to ready */
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 12/37 autofs-5.1.2 - Fix fgets(3) size argument (another one)
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
1. fgets(3) reads at most 1 less then the size argument.
2. Each line of /proc/filesystem isn't a filesystem path.
So it doesn't really matter if the size argument is PATH_MAX-1 or PATH_MAX (=sizeof(buf)) as long as the buffer is large enough. We can just use sizeof(buf).
--- CHANGELOG | 1 + daemon/module.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
CHANGELOG +1 -0
@@ -11,6 +11,7 @@ xx/xx/2016 autofs-5.1.3 - fix file map changed check. - Remove unused local 2KB buffer. - Fix typos in error messages. +- Fix fgets(3) size argument (another one). 15/06/2016 autofs-5.1.2 =======================
daemon/module.c +1 -1
@@ -38,7 +38,7 @@ int load_autofs4_module(void)return 0 ; } -while (fgets (buf,PATH_MAX -1 , fp)) { +while (fgets (buf,sizeof (buf), fp)) {if (strstr (buf,"autofs" )) {fclose (fp);return 1 ;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 13/37 autofs-5.1.2 - fix short memory allocation in lookup_amd_instance()
In reply to Ian KentFix off by one memory allocation size in lookup_amd_instance().
--- CHANGELOG | 1 + daemon/lookup.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
CHANGELOG +1 -0
@@ -12,6 +12,7 @@ xx/xx/2016 autofs-5.1.3 - Remove unused local 2KB buffer. - Fix typos in error messages. - Fix fgets(3) size argument (another one). +- fix short memory allocation in lookup_amd_instance(). 15/06/2016 autofs-5.1.2 =======================
daemon/lookup.c +1 -1
@@ -786,7 +786,7 @@ static int lookup_amd_instance(struct autofs_point *ap,return NSS_STATUS_UNKNOWN ; } - m_key =malloc (strlen (ap->path) +strlen (me->multi->key) +1 ); + m_key =malloc (strlen (ap->path) +strlen (me->multi->key) +2 );if (!m_key) {error (ap->logopt,"failed to allocate storage for search key" );
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 14/37 autofs-5.1.2 - fix count_mounts() function
In reply to Ian Kentcount_mounts() gets the number of mounts wrong, make it include the base directory also.
--- CHANGELOG | 1 + daemon/automount.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
CHANGELOG +1 -0
@@ -13,6 +13,7 @@ xx/xx/2016 autofs-5.1.3 - Fix typos in error messages. - Fix fgets(3) size argument (another one). - fix short memory allocation in lookup_amd_instance(). +- fix count_mounts() function. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +1 -1
@@ -420,7 +420,7 @@ int count_mounts(struct autofs_point *ap, const char *path, dev_t dev) counter.count =0 ; counter.dev = dev; -if (walk_tree (path, counter_fn,0 , ap, &counter) ==-1 ) +if (walk_tree (path, counter_fn,1 , ap, &counter) ==-1 )return -1 ;return counter.count;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 15/37 autofs-5.1.2 - configure: add cache variable for Linux proc filesystem check
In reply to Ian KentFrom: Thomas Petazzoni <[email protected]>
When cross-compiling, whether the /proc filesystem is available in the build environment does not give any indication as to whether it will be available in the execution environment.
This commit therefore adjust the AF_LINUX_PROCFS macro to use AC_CACHE_CHECK(), so that an ac_cv_linux_procfs variable can be preseeded in the environment to force the result of this check.
--- CHANGELOG | 1 + aclocal.m4 | 15 +++++---------- configure | 16 ++++++++-------- 3 files changed, 14 insertions(+), 18 deletions(-)
CHANGELOG +1 -0
@@ -14,6 +14,7 @@ xx/xx/2016 autofs-5.1.3 - Fix fgets(3) size argument (another one). - fix short memory allocation in lookup_amd_instance(). - fix count_mounts() function. +- configure: add cache variable for Linux proc filesystem check. 15/06/2016 autofs-5.1.2 =======================
aclocal.m4 +5 -10
@@ -80,16 +80,11 @@ dnl dnl Check for the Linux /proc filesystem dnl -------------------------------------------------------------------------- AC_DEFUN(AF_LINUX_PROCFS, -[AC_MSG_CHECKING(for Linux proc filesystem) -if test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" -then - linux_procfs=yes -else - linux_procfs=no -fi -AC_MSG_RESULT($linux_procfs) -if test $linux_procfs = yes -then +[AC_CACHE_CHECK([for Linux proc filesystem], [ac_cv_linux_procfs], + [ac_cv_linux_procfs=no + test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" && ac_cv_linux_procfs=yes]) + if test $ac_cv_linux_procfs = yes + then AC_DEFINE(HAVE_LINUX_PROCFS, 1, [Define if you have the Linux /proc filesystem.]) fi])
configure +8 -8
@@ -2194,16 +2194,16 @@ $as_echo "$searchpath" >&6; } # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux proc filesystem" >&5 $as_echo_n "checking for Linux proc filesystem... " >&6; } -if test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" -then - linux_procfs=yes +if ${ac_cv_linux_procfs+:} false; then : + $as_echo_n "(cached) " >&6 else - linux_procfs=no + ac_cv_linux_procfs=no + test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" && ac_cv_linux_procfs=yes fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $linux_procfs" >&5 -$as_echo "$linux_procfs" >&6; } -if test $linux_procfs = yes -then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_linux_procfs" >&5 +$as_echo "$ac_cv_linux_procfs" >&6; } + if test $ac_cv_linux_procfs = yes + then $as_echo "#define HAVE_LINUX_PROCFS 1" >>confdefs.h
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 16/37 autofs-5.1.2 - Avoid local variable name shadowing another
In reply to Ian KentFrom: Tomohiro Kusumi <[email protected]>
There are two local variabls int ret, and the one in the inner scope doesn't need to be named as int ret.
--- CHANGELOG | 1 + daemon/automount.c | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-)
CHANGELOG +1 -0
@@ -15,6 +15,7 @@ xx/xx/2016 autofs-5.1.3 - fix short memory allocation in lookup_amd_instance(). - fix count_mounts() function. - configure: add cache variable for Linux proc filesystem check. +- Avoid local variable name shadowing another. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +1 -5
@@ -310,17 +310,13 @@ static int walk_tree(const char *base, int (*fn) (struct autofs_point *ap,return -1 ;while (n--) { -int ret, size; -if (strcmp (de[n]->d_name,"." ) ==0 ||strcmp (de[n]->d_name,".." ) ==0 ) {free (de[n]);continue ; } - size =sizeof (buf); - ret =cat_path (buf, size, base, de[n]->d_name); -if (!ret) { +if (!cat_path (buf,sizeof (buf), base, de[n]->d_name)) {do {free (de[n]); }while (n--);
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 17/37 autofs-5.1.2 - fix typo in MOUNT_FLAG_GHOST comment
In reply to Ian Kent--- include/automount.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/automount.h +1 -1
@@ -507,7 +507,7 @@ struct kernel_mod_version {unsigned int minor; }; -/* Enable/disable gohsted directories */ +/* Enable/disable ghosted directories */ #define MOUNT_FLAG_GHOST 0x0001/* Directory created for this mount? */
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 18/37 autofs-5.1.2 - fix cachefs parse message not being logged
In reply to Ian Kent--- modules/amd_parse.y | 1 + 1 file changed, 1 insertion(+)
modules/amd_parse.y +1 -0
@@ -301,6 +301,7 @@ option_assignment: MAP_OPTION OPTION_ASSIGN FS_TYPE } else if (!strcmp($3, "cachefs")) { sprintf(msg_buf, "file syatem %s is not " "supported by autofs, ignored", $3); + amd_msg(msg_buf); } else { amd_notify($1); YYABORT;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 19/37 autofs-5.1.2 - fix argc off by one in mount_autofs.c
In reply to Ian KentThe mount_autofs.c module incorrectly calculates the number of arguments to its map.
--- CHANGELOG | 1 + modules/mount_autofs.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-)
CHANGELOG +1 -0
@@ -16,6 +16,7 @@ xx/xx/2016 autofs-5.1.3 - fix count_mounts() function. - configure: add cache variable for Linux proc filesystem check. - Avoid local variable name shadowing another. +- fix argc off by one in mount_autofs.c. 15/06/2016 autofs-5.1.2 =======================
modules/mount_autofs.c +4 -4
@@ -179,11 +179,11 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,if (options) {char *t = options; -do { +while ((t =strchr (t,',' )) !=NULL ) { argc++;if (*t ==',' ) t++; - }while ((t =strchr (t,',' )) !=NULL ); + } } argv = (const char **)alloca ((argc +1 ) *sizeof (char *));
@@ -235,13 +235,13 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,if (options) { p = options; -do { +while ((p =strchr (p,',' )) !=NULL ) {if (*p ==',' ) { *p ='\0' ; p++; } argv[argc++] = p; - }while ((p =strchr (p,',' )) !=NULL ); + } } argv[argc] =NULL ;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 20/37 autofs-5.1.2 - fix _strncmp() usage
In reply to Ian KentA change to fix nfs mount options changed to using a custom strncmp() function.
While the usage of the function is correct in the nfs and bind mount modules it isn't correct in the autofs and ext2 mount modules.
--- CHANGELOG | 1 + modules/mount_autofs.c | 12 ++++++------ modules/mount_ext2.c | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-)
CHANGELOG +1 -0
@@ -17,6 +17,7 @@ xx/xx/2016 autofs-5.1.3 - configure: add cache variable for Linux proc filesystem check. - Avoid local variable name shadowing another. - fix argc off by one in mount_autofs.c. +- fix _strncmp() usage. 15/06/2016 autofs-5.1.2 =======================
modules/mount_autofs.c +6 -6
@@ -121,17 +121,17 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,while (*comma !='\0' && *comma !=',' ) comma++; -if (_strncmp (cp,"nobrowse" ,8 ) ==0 ) +if (_strncmp ("nobrowse" , cp,8 ) ==0 ) ghost =0 ; -else if (_strncmp (cp,"nobind" ,6 ) ==0 ) +else if (_strncmp ("nobind" , cp,6 ) ==0 ) nobind =1 ; -else if (_strncmp (cp,"browse" ,6 ) ==0 ) +else if (_strncmp ("browse" , cp,6 ) ==0 ) ghost =1 ; -else if (_strncmp (cp,"symlink" ,7 ) ==0 ) +else if (_strncmp ("symlink" , cp,7 ) ==0 ) symlnk =1 ; -else if (_strncmp (cp,"hosts" ,5 ) ==0 ) +else if (_strncmp ("hosts" , cp,5 ) ==0 ) hosts =1 ; -else if (_strncmp (cp,"timeout=" ,8 ) ==0 ) { +else if (_strncmp ("timeout=" , cp,8 ) ==0 ) {char *val =strchr (cp,'=' );unsigned tout;if (val) {
modules/mount_ext2.c +1 -1
@@ -82,7 +82,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, intif (options && options[0 ]) {for (p = options; (p1 =strchr (p,',' )); p = p1) -if (!_strncmp (p,"ro" , p1 - p) && ++p1 - p ==sizeof ("ro" )) +if (!_strncmp ("ro" , p, p1 - p) && ++p1 - p ==sizeof ("ro" )) ro =1 ;if (!strcmp (p,"ro" )) ro =1 ;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 21/37 autofs-5.1.1 - fix create_client() RPC client handling
In reply to Ian KentThe autofs socket minimization strategy is to reuse the socket descriptor when creating an RPC client for the same protocol.
But in create_client() there is a case where the socket descriptor can be obtained from RPC client, the RPC client destroyed, but not cleared in the persistent data structure.
In create_client(), once an attempt is done to get the socket descriptor, the RPC client should always be destroyed and cleared in the persistent data structure.
--- CHANGELOG | 1 + lib/rpc_subs.c | 21 ++++++++------------- 2 files changed, 9 insertions(+), 13 deletions(-)
CHANGELOG +1 -0
@@ -18,6 +18,7 @@ xx/xx/2016 autofs-5.1.3 - Avoid local variable name shadowing another. - fix argc off by one in mount_autofs.c. - fix _strncmp() usage. +- fix create_client() RPC client handling. 15/06/2016 autofs-5.1.2 =======================
lib/rpc_subs.c +8 -13
@@ -654,14 +654,12 @@ static int create_client(struct conn_info *info, CLIENT **client) *client =NULL ;if (info->client) { -if (!clnt_control (info->client,CLGET_FD , (char *) &fd)) { - fd =RPC_ANYSOCK ; -clnt_destroy (info->client); - info->client =NULL ; - }else { +if (clnt_control (info->client,CLGET_FD , (char *) &fd))clnt_control (info->client,CLSET_FD_NCLOSE ,NULL ); -clnt_destroy (info->client); - } +else + fd =RPC_ANYSOCK ; +clnt_destroy (info->client); + info->client =NULL ; }if (info->addr) {
@@ -677,7 +675,7 @@ static int create_client(struct conn_info *info, CLIENT **client) goto out_close; } -if (!info->client && fd !=RPC_ANYSOCK ) { +if (fd !=RPC_ANYSOCK ) {close (fd); fd =RPC_ANYSOCK ; }
@@ -695,7 +693,6 @@ static int create_client(struct conn_info *info, CLIENT **client)if (ret) {error (LOGOPT_ANY ,"hostname lookup failed: %s" ,gai_strerror (ret)); - info->client =NULL ; goto out_close; }
@@ -714,7 +711,7 @@ static int create_client(struct conn_info *info, CLIENT **client) goto out_close; } -if (!info->client && fd !=RPC_ANYSOCK ) { +if (fd !=RPC_ANYSOCK ) {close (fd); fd =RPC_ANYSOCK ; }
@@ -726,7 +723,6 @@ static int create_client(struct conn_info *info, CLIENT **client) done:if (!*client) { - info->client =NULL ; ret = -ENOTCONN ; goto out_close; }
@@ -734,7 +730,6 @@ done:/* Close socket fd on destroy, as is default for rpcowned fds */ if (!clnt_control (*client,CLSET_FD_CLOSE ,NULL )) {clnt_destroy (*client); - info->client =NULL ; ret = -ENOTCONN ; goto out_close; }
@@ -742,7 +737,7 @@ done:return 0 ; out_close: -if (fd !=-1 ) +if (fd !=RPC_ANYSOCK )close (fd);return ret; }
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 22/37 autofs-5.1.2 - update and add README for old autofs schema
In reply to Ian KentThe distribution file samples/autofs.schema is very old and is incorrect.
This schema was added to the discribution long ago when it was not clear what schema to use for Linux autofs information.
The schema was updated (at least to have consistent OIDs) somewhere along the line but the autofs distribution copy was never updated. The schema has now been updated in autofs but it is not recommended for use as the schema for autofs map information.
The rfc2307 or, preferably the, rfc2307bis schema is the recommened schema to use.
--- CHANGELOG | 1 + README.autofs-schema | 18 ++++++++++++++++++ samples/autofs.schema | 24 ++++++++++-------------- 3 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 README.autofs-schema
CHANGELOG +1 -0
@@ -19,6 +19,7 @@ xx/xx/2016 autofs-5.1.3 - fix argc off by one in mount_autofs.c. - fix _strncmp() usage. - fix create_client() RPC client handling. +- update and add README for old autofs schema. 15/06/2016 autofs-5.1.2 =======================
README.autofs-schema new file +18 -0
@@ -0,0 +1,18 @@ +autofs schema +============= + +The distribution file samples/autofs.schema is very old and is +incorrect. + +This schema was added to the discribution long ago when it was +not clear what schema to use for Linux autofs information. + +The schema was corrected somewhere along the line but the autofs +distribution copy was never updated. The schema has now been +updated but it is not recommended for use as the schema for autofs +map information. + +The rfc2307 or, preferably the, rfc2307bis schema is the recommened +schema to use. + +Ian
samples/autofs.schema +10 -14
@@ -1,6 +1,3 @@ -# -# $id$ -# # Depends upon core.schema and cosine.schema # OID Base is 1.3.6.1.4.1.2312.4
@@ -11,17 +8,16 @@ # Attribute Type Definitions -attributetype ( 1.3.6.1.1.1.1.25 NAME 'automountInformation' - DESC 'Information used by the autofs automounter' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +attributetype ( 1.3.6.1.4.1.2312.4.1.2 NAME 'automountInformation' + DESC 'Information used by the autofs automounter' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) -objectclass ( 1.3.6.1.1.1.1.13 NAME 'automount' SUP top STRUCTURAL - DESC 'An entry in an automounter map' - MUST ( cn $ automountInformation $ objectclass ) - MAY ( description ) ) +objectclass ( 1.3.6.1.4.1.2312.4.2.3 NAME 'automount' SUP top STRUCTURAL + DESC 'An entry in an automounter map' + MUST ( cn $ automountInformation $ objectclass ) + MAY ( description ) ) objectclass ( 1.3.6.1.4.1.2312.4.2.2 NAME 'automountMap' SUP top STRUCTURAL - DESC 'An group of related automount objects' - MUST ( ou ) ) - + DESC 'An group of related automount objects' + MUST ( ou ) )
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 23/37 autofs-5.1.2 - wait for master map available at start
In reply to Ian KentIf the network map source isn't available at start the master map can't be read. In this case we should wait until it is available so we can get a startup map.
--- CHANGELOG | 1 + daemon/automount.c | 81 ++++++++++++++++++++++++++++++++++++++++------ daemon/lookup.c | 8 +++++ lib/master.c | 3 ++ modules/lookup_file.c | 6 +++ modules/lookup_nisplus.c | 14 ++++++-- modules/lookup_yp.c | 13 +++++-- 7 files changed, 108 insertions(+), 18 deletions(-)
CHANGELOG +1 -0
@@ -20,6 +20,7 @@ xx/xx/2016 autofs-5.1.3 - fix _strncmp() usage. - fix create_client() RPC client handling. - update and add README for old autofs schema. +- wait for master map available at start. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +71 -10
119 lines not on this page · raw message
daemon/lookup.c +8 -0
@@ -241,6 +241,7 @@ int lookup_nss_read_master(struct master *master, time_t age) }/* First one gets it */ + result =NSS_STATUS_UNKNOWN ; head = &nsslist;list_for_each (p, head) {struct nss_source *this;
@@ -248,6 +249,13 @@ int lookup_nss_read_master(struct master *master, time_t age) this = list_entry(p, struct nss_source, list); +if (strncmp (this->source,"files" ,5 ) && +strncmp (this->source,"nis" ,3 ) && +strncmp (this->source,"nisplus" ,7 ) && +strncmp (this->source,"ldap" ,4 ) && +strncmp (this->source,"sss" ,3 )) +continue ; +debug (logopt,"reading master %s %s" , this->source, master->name);
lib/master.c +3 -0
@@ -923,7 +923,10 @@ int master_read_master(struct master *master, time_t age, int readall)master_mount_mounts (master, age, readall); else { master->read_fail =0 ; +/* HUP signal sets readall == 1 only */ if (!readall) +return 0 ; +else master_mount_mounts (master, age, readall); }
modules/lookup_file.c +6 -0
@@ -507,6 +507,12 @@ int lookup_read_master(struct master *master, time_t age, void *context)MODPREFIX "failed to read included master map %s" , master->name); +/* +* If we're starting up wee need the whole +* master map initially, so tell the upper +* layer to retry. +*/ + master->read_fail =1 ; } master->depth--; master->recurse =0 ;
modules/lookup_nisplus.c +10 -4
@@ -149,19 +149,25 @@ int lookup_read_master(struct master *master, time_t age, void *context)char *estr =strerror_r (errno, buf,MAX_ERR_BUF );logerr (MODPREFIX "malloc: %s" , estr);pthread_setcancelstate (cur_state,NULL ); -return NSS_STATUS_UNAVAIL ; +return NSS_STATUS_UNKNOWN ; }sprintf (tablename,"%s.org_dir.%s" , ctxt->mapname, ctxt->domainname);/* check that the table exists */ result =nis_lookup (tablename,FOLLOW_PATH |FOLLOW_LINKS );if (result->status !=NIS_SUCCESS && result->status !=NIS_S_SUCCESS ) { +int status = result->status;nis_freeresult (result); -crit (logopt, -MODPREFIX "couldn't locate nis+ table %s" , ctxt->mapname);free (tablename);pthread_setcancelstate (cur_state,NULL ); -return NSS_STATUS_NOTFOUND ; +if (status ==NIS_UNAVAIL || status ==NIS_FAIL ) +return NSS_STATUS_UNAVAIL ; +else { +crit (logopt, +MODPREFIX "couldn't locate nis+ table %s" , + ctxt->mapname); +return NSS_STATUS_NOTFOUND ; + } }sprintf (tablename,"[],%s.org_dir.%s" , ctxt->mapname, ctxt->domainname);
modules/lookup_yp.c +9 -4
@@ -282,9 +282,9 @@ int lookup_read_master(struct master *master, time_t age, void *context)char *mapname;int err; - mapname =alloca (strlen (ctxt->mapname) +1 ); + mapname =malloc (strlen (ctxt->mapname) +1 );if (!mapname) -return 0 ; +return NSS_STATUS_UNKNOWN ;strcpy (mapname, ctxt->mapname);
@@ -308,19 +308,24 @@ int lookup_read_master(struct master *master, time_t age, void *context) err =yp_all ((char *) ctxt->domainname, mapname, &ypcb); } -if (err ==YPERR_SUCCESS ) +if (err ==YPERR_SUCCESS ) { +free (mapname);return NSS_STATUS_SUCCESS ; + }info (logopt,MODPREFIX "read of master map %s failed: %s" , mapname,yperr_string (err)); -if (err ==YPERR_PMAP || err ==YPERR_YPSERV ) +free (mapname); + +if (err ==YPERR_YPSERV || err ==YPERR_DOMAIN )return NSS_STATUS_UNAVAIL ;return NSS_STATUS_NOTFOUND ; } +free (mapname);return NSS_STATUS_SUCCESS ; }
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 24/37 autofs-5.1.2 - add master read wait option
In reply to Ian KentAdd command line and configuration options to set the amount of time to wait for the master map to become available at program start.
--- CHANGELOG | 1 + daemon/automount.c | 11 +++++++++-- include/defaults.h | 2 ++ lib/defaults.c | 17 +++++++++++++++++ man/autofs.conf.5.in | 5 +++++ man/automount.8 | 4 ++++ redhat/autofs.conf.default.in | 7 +++++++ samples/autofs.conf.default.in | 7 +++++++ 8 files changed, 52 insertions(+), 2 deletions(-)
CHANGELOG +1 -0
@@ -21,6 +21,7 @@ xx/xx/2016 autofs-5.1.3 - fix create_client() RPC client handling. - update and add README for old autofs schema. - wait for master map available at start. +- add master read wait option. 15/06/2016 autofs-5.1.2 =======================
daemon/automount.c +9 -2
@@ -2103,10 +2103,11 @@ int main(int argc, char *argv[])unsigned ghost, logging, daemon_check;unsigned dumpmaps, foreground, have_global_options;unsigned master_read; +int master_wait;time_t timeout;time_t age =monotonic_time (NULL );struct rlimit rlim; -const char *options ="+hp:t:vmdD:fVrO:l:n:CF" ; +const char *options ="+hp:t:vmdD:fVrO:l:n:CFM" ;static const struct option long_options[] = { {"help" ,0 ,0 ,'h' }, {"pid-file" ,1 ,0 ,'p' },
@@ -2123,6 +2124,7 @@ int main(int argc, char *argv[]) {"set-log-priority", 1, 0, 'l'}, {"dont-check-daemon", 0, 0, 'C'}, {"force", 0, 0, 'F'}, + {"master-wait", 1, 0, 'M'}, {0, 0, 0, 0} };
@@ -2143,6 +2145,7 @@ int main(int argc, char *argv[]) nfs_mount_uses_string_options =check_nfs_mount_version (&vers, &check); kpkt_len =get_kpkt_len (); + master_wait =defaults_get_master_wait (); timeout =defaults_get_timeout (); ghost =defaults_get_browse_mode (); logging =defaults_get_logging ();
@@ -2202,6 +2205,10 @@ int main(int argc, char *argv[]) dumpmaps =1 ;break ; +case 'M' : + master_wait =getnumopt (optarg, opt); +break ; +case 'O' :if (!have_global_options) { global_options =strdup (optarg);
@@ -2525,7 +2532,7 @@ int main(int argc, char *argv[])* a signal is received, in which case exit returning an * error. */ -if (!do_master_read_master (master_list,-1 )) { +if (!do_master_read_master (master_list, master_wait)) {logerr ("%s: failed to read master map!" , program);master_kill (master_list);release_flag_file ();
include/defaults.h +2 -0
@@ -25,6 +25,7 @@#define DEFAULT_MASTER_MAP_NAME "auto.master"#define DEFAULT_TIMEOUT "600" +#define DEFAULT_MASTER_WAIT "-1"#define DEFAULT_NEGATIVE_TIMEOUT "60"#define DEFAULT_MOUNT_WAIT "-1"#define DEFAULT_UMOUNT_WAIT "12"
@@ -152,6 +153,7 @@ void defaults_conf_release(void);const char *defaults_get_master_map (void );int defaults_master_set (void );unsigned int defaults_get_timeout (void ); +int defaults_get_master_wait (void );unsigned int defaults_get_negative_timeout (void );unsigned int defaults_get_browse_mode (void );unsigned int defaults_get_logging (void );
lib/defaults.c +17 -0
@@ -48,6 +48,7 @@#define NAME_MASTER_MAP "master_map_name"#define NAME_TIMEOUT "timeout" +#define NAME_MASTER_WAIT "master_wait"#define NAME_NEGATIVE_TIMEOUT "negative_timeout"#define NAME_BROWSE_MODE "browse_mode"#define NAME_LOGGING "logging"
@@ -288,6 +289,11 @@ static int conf_load_autofs_defaults(void)if (ret ==CFG_FAIL ) goto error; + ret =conf_update (sec,NAME_MASTER_WAIT , +DEFAULT_MASTER_WAIT ,CONF_ENV ); +if (ret ==CFG_FAIL ) + goto error; + ret =conf_update (sec,NAME_NEGATIVE_TIMEOUT ,DEFAULT_NEGATIVE_TIMEOUT ,CONF_ENV );if (ret ==CFG_FAIL )
@@ -1569,6 +1575,17 @@ unsigned int defaults_get_timeout(void)return (unsigned int ) timeout; } +int defaults_get_master_wait (void ) +{ +long wait; + + wait =conf_get_number (autofs_gbl_sec,NAME_MASTER_WAIT ); +if (wait <0 ) + wait =atol (DEFAULT_MASTER_WAIT ); + +return (int ) wait; +} +unsigned int defaults_get_negative_timeout (void ) {long n_timeout;
man/autofs.conf.5.in +5 -0
@@ -30,6 +30,11 @@ default is 10 minutes, but the default installed configuration overrides this and sets the timeout to 5 minutes to be consistent with earlier autofs releases. .TP +.B master_wait +sets the default maximum time to wait for the master map to become +available if it cannot be read at program start (program default -1, +wait forever). +.TP .B negative_timeout .br Set the default timeout for caching failed key lookups (program default
man/automount.8 +4 -0
@@ -37,6 +37,10 @@ The internal program default is 10 minutes, but the default installed configuration overrides this and sets the timeout to 5 minutes to be consistent with earlier autofs releases. .TP +.I "\-M <seconds>, \-\-master-wait <seconds>" +Set the maximum time to wait for the master map to become available +if it cannot be read at program start. +.TP .I "\-n <seconds>, \-\-negative\-timeout <seconds>" Set the default timeout for caching failed key lookups. The default is 60 seconds. .TP
redhat/autofs.conf.default.in +7 -0
@@ -14,6 +14,13 @@ # timeout = 300 # +# master_wait - set the default maximum time to wait for the +# master map to become available if it cannot +# be read at program start (default -1, wait +# forever). +# +#master_wait = -1 +# # negative_timeout - set the default negative timeout for # failed mount attempts (default 60). #
samples/autofs.conf.default.in +7 -0
@@ -14,6 +14,13 @@ # timeout = 300 # +# master_wait - set the default maximum time to wait for the +# master map to become available if it cannot +# be read at program start (default -1, wait +# forever). +# +# master_wait = -1 +# # negative_timeout - set the default negative timeout for # failed mount attempts (default 60). #
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 25/37 autofs-5.1.2 - work around sss startup delay
In reply to Ian KentWhen sssd is starting up there can be a delay before the map information is read. During that time an ENOENT can be returned when there actually is a map and autofs must respect the ENOENT return and continue becuase no map present is a valid response.
To work around that make the master map read wait and retry for for a time to give sssd a chance to read the map before returning either an ENOENT or, if the retry limit is exceeded, ETIMEDOUT.
--- CHANGELOG | 1 + modules/lookup_sss.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+)
CHANGELOG +1 -0
@@ -22,6 +22,7 @@ xx/xx/2016 autofs-5.1.3 - update and add README for old autofs schema. - wait for master map available at start. - add master read wait option. +- work around sss startup delay. 15/06/2016 autofs-5.1.2 =======================
modules/lookup_sss.c +61 -0
79 lines not on this page · raw message
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 26/37 autofs-5.1.2 - add sss master map wait config option
In reply to Ian KentWhen 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.
--- 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(-)
CHANGELOG +1 -0
@@ -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 =======================
include/defaults.h +3 -0
@@ -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 );
lib/defaults.c +18 -0
@@ -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);
man/autofs.conf.5.in +7 -0
@@ -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:
modules/lookup_sss.c +4 -3
@@ -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);
redhat/autofs.conf.default.in +10 -0
@@ -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
samples/autofs.conf.default.in +10 -0
@@ -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
Ian Kent
maintainerPATCH 27/37 autofs-5.1.2 - fix typos in README.amd-maps
In reply to Ian KentFix a few typos and try and clearify some statements in the README.
--- CHANGELOG | 1 + README.amd-maps | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-)
CHANGELOG +1 -0
@@ -24,6 +24,7 @@ xx/xx/2016 autofs-5.1.3 - add master read wait option. - work around sss startup delay. - add sss master map wait config option. +- fix typos in README.amd-maps. 15/06/2016 autofs-5.1.2 =======================
README.amd-maps +8 -7
@@ -7,7 +7,8 @@ The ability to parse amd format maps has been added to autofs. How to use amd maps in autofs ----------------------------- -To add amd map parsing to autofs new "format" module has been added. +To add amd map parsing to autofs a new "format" module has been added. + To use this new map format module the existing master map syntax is used as described below.
@@ -20,7 +21,7 @@ For amd format maps this becomes: /amd/mp file,amd:amd.mp which will use file as the map source and the amd format parser for -the map. But see the section below on configuration below for how to +the map. But see the section below on configuration for how to eliminate the need to specify "map-type,format" in the master map. Configuration sub-system changes
@@ -42,18 +43,18 @@ All that's needed to add an existing amd configuration to autofs is to add it below the autofs configuration. Apart from changing the amd "[ global ]" section name to "[ amd ]" nothing else should need to be changed. However, quite a few amd configuration options don't have -meaning within autofs. When these options are seen it should be logged. +meaning within autofs. When these options are seen they are logged. Be aware that, if the an old configuration exists and the configuration hasn't been updated after the installation, changes to the the old configuration will override changes to the new configuration because backward compatibility takes priority over the new implementation. -The amd per-map sections have two functions, to allow per-mount +The amd per-mount sections have two functions, to allow per-mount configuration, as it does in amd, and to allow master map entries to avoid the need to specify the "type,format" part of the master map -entry so they can use the nsswitch map source functionality in the -same way autofs master map entries do. +entry. This allows them to use the nsswitch map source functionality +in the same way autofs master map entries do. If a section for an amd mount is added below the global amd section using the mount point path (as is done in amd.conf) then autofs will
@@ -63,7 +64,7 @@ be given in the master map entry the map_name option is not mandatory as it is in amd and will no be used. If a mount point is present in the master map and the source of the -map is nis then it should be sufficient to use (for example): +map is nis then it is sufficient to use (for example): /amd/mp amd.mp
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 28/37 autofs-5.1.2 - add ref counting to struct map_source
In reply to Ian Kentamd map format maps that are type "auto" frequently refer to the current map in their map entries.
While this isn't a problem for relatively small maps it can be very wasteful for large maps and even more so for maps that have multi- component keys that trigger type "auto" mounts as they progress down the directory tree.
So add a reference count in order for amd type "auto" mounts to use the parent map if it matches.
sun format maps are much less likley to use the same map and if they do they are usually trivial, one line maps, so it isn't a problem.
But, more importantly, sun format maps need to track recursive inclusion and inclusion depth for a given map source when plus map inclusion is used which prevents the map soucre from being shared.
--- CHANGELOG | 1 + daemon/indirect.c | 7 +++++- include/master.h | 3 ++ lib/master.c | 22 +++++++++++++++++ modules/mount_autofs.c | 61 ++++++++++++++++++++++++++++++++---------------- 5 files changed, 73 insertions(+), 21 deletions(-)
CHANGELOG +1 -0
@@ -25,6 +25,7 @@ xx/xx/2016 autofs-5.1.3 - work around sss startup delay. - add sss master map wait config option. - fix typos in README.amd-maps. +- add ref counting to struct map_source. 15/06/2016 autofs-5.1.2 =======================
daemon/indirect.c +6 -1
@@ -97,7 +97,12 @@ static int do_mount_autofs_indirect(struct autofs_point *ap, const char *root)int ret;int err; - ap->exp_runfreq = (timeout +CHECK_RATIO -1 ) /CHECK_RATIO ; +/* If the map is being shared the exp_timeout can't be inherited +* from the map source since it may be different so the autofs +* point exp_runfreq must have already been set. +*/ +if (ap->entry->maps->ref <=1 ) + ap->exp_runfreq = (timeout +CHECK_RATIO -1 ) /CHECK_RATIO ;if (ops->version && !do_force_unlink) { ap->flags |=MOUNT_FLAG_REMOUNT ;
include/master.h +3 -0
@@ -23,6 +23,7 @@#define MAP_FLAG_FORMAT_AMD 0x0001struct map_source { +unsigned int ref;unsigned int flags;char *type;char *format;
@@ -89,6 +90,8 @@ struct map_source * master_add_map_source(struct master_mapent *, char *, char *, time_t, int, const char **);struct map_source *master_find_map_source (struct master_mapent *,const char *,const char *,int ,const char **); +struct map_source * +master_get_map_source (struct master_mapent *,const char *,const char *,int ,const char **);void master_free_map_source (struct map_source *,unsigned int );struct map_source *master_find_source_instance (struct map_source *,const char *,const char *,int ,const char **);
lib/master.c +22 -0
@@ -181,6 +181,7 @@ master_add_map_source(struct master_mapent *entry,if (!source)return NULL ;memset (source,0 ,sizeof (struct map_source )); + source->ref =1 ;if (type) { ntype =strdup (type);
@@ -232,6 +233,8 @@ master_add_map_source(struct master_mapent *entry, this =__master_find_map_source (entry, type, format, argc, tmpargv);if (this) { +error (entry->ap->logopt, +"map source used without taking reference" ); this->age = age;master_free_map_source (source,0 );master_source_unlock (entry);
@@ -330,8 +333,27 @@ struct map_source *master_find_map_source(struct master_mapent *entry,return source; } +struct map_source * +master_get_map_source (struct master_mapent *entry, +const char *type,const char *format, +int argc,const char **argv) +{ +struct map_source *source =NULL ; + +master_source_readlock (entry); + source =__master_find_map_source (entry, type, format, argc, argv); +if (source) + source->ref++; +master_source_unlock (entry); + +return source; +} +static void __master_free_map_source (struct map_source *source,unsigned int free_cache) { +/* instance map sources are not ref counted */ +if (source->ref && --source->ref) +return ;if (source->type)free (source->type);if (source->format)
modules/mount_autofs.c +41 -20
89 lines not on this page · raw message
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 29/37 autofs-5.1.2 - add support for amd browsable option
In reply to Ian KentFrom: Ian Kent <[email protected]>
Add support for the "browsable_dirs" configuration option and the pseudo mount option "browsable" of amd format maps.
Note that support for the configuration option "browsable_dirs = full" and the pseudo mount option "fullybrowsable" of type auto map entries cannot be implemented using the existing kernel to user space autofs implementation.
--- CHANGELOG | 1 README.amd-maps | 2 - daemon/lookup.c | 106 ++++++++++++++++++++++++++++++++-------- lib/master_parse.y | 14 ++++- man/autofs.conf.5.in | 7 ++- modules/amd_parse.y | 3 - modules/mount_autofs.c | 8 ++- modules/parse_amd.c | 2 - redhat/autofs.conf.default.in | 7 ++- samples/autofs.conf.default.in | 7 ++- 10 files changed, 120 insertions(+), 37 deletions(-)
CHANGELOG +1 -0
@@ -26,6 +26,7 @@ xx/xx/2016 autofs-5.1.3 - add sss master map wait config option. - fix typos in README.amd-maps. - add ref counting to struct map_source. +- add support for amd browsable option. 15/06/2016 autofs-5.1.2 =======================
README.amd-maps +1 -1
@@ -101,7 +101,7 @@ What hasn't been implemented ---------------------------- The configuration options fully_qualified_hosts, unmount_on_exit and -browsable_dirs (and a couple of others) aren't implemented. +browsable_dirs = full (and a couple of others) aren't implemented. Map types (sources) ndbm, passwd are not implemented. The map source "sss" can't be used for amd format maps.
daemon/lookup.c +85 -21
160 lines not on this page · raw message
lib/master_parse.y +11 -3
@@ -811,14 +811,22 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne if (format && !strcmp(format, "amd")) { unsigned int loglevel = conf_amd_get_log_options(); + unsigned int flags = conf_amd_get_flags(path); + if (loglevel <= LOG_DEBUG && loglevel > LOG_INFO) logopt = LOGOPT_DEBUG; else if (loglevel <= LOG_INFO && loglevel > LOG_ERR) logopt = LOGOPT_VERBOSE; - /* amd mounts don't support browse mode */ - ghost = 0; - } + /* It isn't possible to provide the fullybrowsable amd + * browsing functionality within the autofs framework. + * This flag will not be set if browsable_dirs = full + * in the configuration or fullybrowsable is present as + * an option. + */ + if (flags & CONF_BROWSABLE_DIRS) + ghost = 1; + } if (timeout < 0) { /*
man/autofs.conf.5.in +6 -1
@@ -355,7 +355,12 @@ and that will be done. .TP .B browsable_dirs .br -Not yet implemented. +Allow map keys to be shown in directory listings. This option +can have values of "yes" or "no". The default is "no". A variation +of this option, "browsable", can be used as a pseudo mount option +in type "auto" map entries to provide provide browsing funtionality +in sub-mounts. The amd "browsable_dirs = full" option cannot be +implemented within the current autofs framework and is not supported. .TP .B exec_map_timeout .br
modules/amd_parse.y +1 -2
@@ -433,8 +433,7 @@ option_assignment: MAP_OPTION OPTION_ASSIGN FS_TYPE options: OPTION { - if (!strcmp($1, "browsable") || - !strcmp($1, "fullybrowsable") || + if (!strcmp($1, "fullybrowsable") || !strcmp($1, "nounmount") || !strcmp($1, "unmount")) { sprintf(msg_buf, "option %s is not currently "
modules/mount_autofs.c +4 -4
@@ -121,11 +121,13 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,while (*comma !='\0' && *comma !=',' ) comma++; -if (_strncmp ("nobrowse" , cp,8 ) ==0 ) +if (_strncmp ("nobrowse" , cp,8 ) ==0 || +_strncmp ("nobrowsable" , cp,11 ) ==0 ) ghost =0 ;else if (_strncmp ("nobind" , cp,6 ) ==0 ) nobind =1 ; -else if (_strncmp ("browse" , cp,6 ) ==0 ) +else if (_strncmp ("browse" , cp,6 ) ==0 || +_strncmp ("browsable" , cp,9 ) ==0 ) ghost =1 ;else if (_strncmp ("symlink" , cp,7 ) ==0 ) symlnk =1 ;
@@ -287,8 +289,6 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, nap->pref = am_entry->pref; am_entry->pref =NULL ; } -/* amd mounts don't support browse mode */ - nap->flags &= ~MOUNT_FLAG_GHOST ; }if (handle_mounts_startup_cond_init (&suc)) {
modules/parse_amd.c +1 -1
@@ -930,7 +930,7 @@ static int do_auto_mount(struct autofs_point *ap, const char *name, }return do_mount (ap, ap->path, - name,strlen (name), target,"autofs" ,NULL ); + name,strlen (name), target,"autofs" , entry->opts); } static int do_link_mount(struct autofs_point *ap, const char *name,
redhat/autofs.conf.default.in +5 -2
@@ -274,8 +274,6 @@ mount_nfs_default_protocol = 4 # is a sensible option to implement and that will be # done. # -# browsable_dirs - not yet implemented. -# # exec_map_timeout - a timeout is not currently used for # for program maps, might be implemented. #
@@ -318,6 +316,11 @@ mount_nfs_default_protocol = 4 # takes its default value from the autofs internal default # of 600 seconds. # +# browsable_dirs - make map keys visible in directory listings. +# Note that support for the "fullybrowsable" option cannot +# be added using the existing kernel to user space autofs +# implementation. +# # autofs_use_lofs - if set to "yes" autofs will attempt to use bind # mounts for type "auto" when possible. #
samples/autofs.conf.default.in +5 -2
@@ -273,8 +273,6 @@ browse_mode = no # is a sensible option to implement and that will be # done. # -# browsable_dirs - not yet implemented. -# # exec_map_timeout - a timeout is not currently used for # for program maps, might be implemented. #
@@ -317,6 +315,11 @@ browse_mode = no # takes its default value from the autofs internal default # of 600 seconds. # +# browsable_dirs - make map keys visible in directory listings. +# Note that support for the "fullybrowsable" option cannot +# be added using the existing kernel to user space autofs +# implementation. +# # autofs_use_lofs - if set to "yes" autofs will attempt to use bind # mounts for type "auto" when possible. #
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 30/37 autofs-5.1.2 - add function conf_amd_get_map_name()
In reply to Ian KentAdd configuration function to get the map_name option from an amd mount configuration section.
--- CHANGELOG | 1 + include/defaults.h | 1 + lib/defaults.c | 10 ++++++++++ 3 files changed, 12 insertions(+)
CHANGELOG +1 -0
@@ -27,6 +27,7 @@ xx/xx/2016 autofs-5.1.3 - fix typos in README.amd-maps. - add ref counting to struct map_source. - add support for amd browsable option. +- add function conf_amd_get_map_name(). 15/06/2016 autofs-5.1.2 =======================
include/defaults.h +1 -0
@@ -194,6 +194,7 @@ char *conf_amd_get_nfs_proto(void);char *conf_amd_get_nis_domain (void );unsigned int conf_amd_set_nis_domain (const char *);char *conf_amd_get_map_defaults (const char *); +char *conf_amd_get_map_name (const char *);char *conf_amd_get_map_type (const char *);char *conf_amd_get_search_path (const char *);unsigned int conf_amd_get_dismount_interval (const char *);
lib/defaults.c +10 -0
@@ -108,6 +108,7 @@#define NAME_AMD_MAP_DEFAULTS "map_defaults"#define NAME_AMD_MAP_OPTIONS "map_options"#define NAME_AMD_MAP_RELOAD_INTERVAL "map_reload_interval" +#define NAME_AMD_MAP_NAME "map_name"#define NAME_AMD_MAP_TYPE "map_type"#define NAME_AMD_MOUNT_TYPE "mount_type"#define NAME_AMD_PID_FILE "pid_file"
@@ -1934,6 +1935,15 @@ char *conf_amd_get_map_defaults(const char *section)return tmp; } +char *conf_amd_get_map_name (const char *section) +{ +char *tmp =NULL ; +if (section) + tmp =conf_get_string (section,NAME_AMD_MAP_NAME ); + +return tmp; +} +char *conf_amd_get_map_type (const char *section) {char *tmp =NULL ;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 31/37 autofs-5.1.2 - add function conf_amd_get_mount_paths()
In reply to Ian KentAdd configuration function to get an array of amd mount section paths.
--- CHANGELOG | 1 + include/defaults.h | 1 + lib/defaults.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+)
CHANGELOG +1 -0
@@ -28,6 +28,7 @@ xx/xx/2016 autofs-5.1.3 - add ref counting to struct map_source. - add support for amd browsable option. - add function conf_amd_get_map_name(). +- add function conf_amd_get_mount_paths(). 15/06/2016 autofs-5.1.2 =======================
include/defaults.h +1 -0
@@ -174,6 +174,7 @@ 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_mount_paths (void );char *conf_amd_get_arch (void );char *conf_amd_get_karch (void );char *conf_amd_get_os (void );
lib/defaults.c +80 -0
92 lines not on this page · raw message
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 32/37 autofs-5.1.2 - include amd mount section mounts in master mounts list
In reply to Ian KentCurrently a master map entry is required for amd format maps and top level amd mount path configuration sections can only used to provide additional per-mount configuration.
But being able to use the top level amd format mount path configuration sections alone allows potentially incompatible master map entries to not be included in the master map.
--- CHANGELOG | 1 + README.amd-maps | 49 +++++++++++++++++++++---- lib/master.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 152 insertions(+), 7 deletions(-)
CHANGELOG +1 -0
@@ -29,6 +29,7 @@ xx/xx/2016 autofs-5.1.3 - add support for amd browsable option. - add function conf_amd_get_map_name(). - add function conf_amd_get_mount_paths(). +- include amd mount sections mounts in master mounts list. 15/06/2016 autofs-5.1.2 =======================
README.amd-maps +42 -7
76 lines not on this page · raw message
lib/master.c +109 -0
121 lines not on this page · raw message
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 33/37 autofs-5.1.2 - check for conflicting amd section mounts
In reply to Ian KentAllowing the addition of amd section mounts to the master mounts list can lead to conflicting mount point paths.
Check for conflicts and skip the amd mount section mounts if a conflict with the master map mounts is found.
--- CHANGELOG | 1 + include/master.h | 1 + lib/master.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 58 insertions(+), 3 deletions(-)
CHANGELOG +1 -0
@@ -30,6 +30,7 @@ xx/xx/2016 autofs-5.1.3 - add function conf_amd_get_map_name(). - add function conf_amd_get_mount_paths(). - include amd mount sections mounts in master mounts list. +- check for conflicting amd section mounts. 15/06/2016 autofs-5.1.2 =======================
include/master.h +1 -0
@@ -106,6 +106,7 @@ void master_source_lock_cleanup(void *);void master_source_current_wait (struct master_mapent *);void master_source_current_signal (struct master_mapent *);struct master_mapent *master_find_mapent (struct master *,const char *); +unsigned int master_partial_match_mapent (struct master *,const char *);struct autofs_point *__master_find_submount (struct autofs_point *,const char *);struct autofs_point *master_find_submount (struct autofs_point *,const char *);struct amd_entry *__master_find_amdmount (struct autofs_point *,const char *);
lib/master.c +56 -3
72 lines not on this page · raw message
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 34/37 autofs-5.1.2 - add function conf_get_map_options()
In reply to Ian KentAdd configuration function to get the map_options option from an amd mount configuration section.
--- CHANGELOG | 1 + include/defaults.h | 1 + lib/defaults.c | 10 ++++++++++ 3 files changed, 12 insertions(+)
CHANGELOG +1 -0
@@ -31,6 +31,7 @@ xx/xx/2016 autofs-5.1.3 - add function conf_amd_get_mount_paths(). - include amd mount sections mounts in master mounts list. - check for conflicting amd section mounts. +- add function conf_get_map_options(). 15/06/2016 autofs-5.1.2 =======================
include/defaults.h +1 -0
@@ -196,6 +196,7 @@ char *conf_amd_get_nis_domain(void);unsigned int conf_amd_set_nis_domain (const char *);char *conf_amd_get_map_defaults (const char *);char *conf_amd_get_map_name (const char *); +char *conf_get_map_options (const char *);char *conf_amd_get_map_type (const char *);char *conf_amd_get_search_path (const char *);unsigned int conf_amd_get_dismount_interval (const char *);
lib/defaults.c +10 -0
@@ -109,6 +109,7 @@#define NAME_AMD_MAP_OPTIONS "map_options"#define NAME_AMD_MAP_RELOAD_INTERVAL "map_reload_interval"#define NAME_AMD_MAP_NAME "map_name" +#define NAME_AMD_MAP_OPTIONS "map_options"#define NAME_AMD_MAP_TYPE "map_type"#define NAME_AMD_MOUNT_TYPE "mount_type"#define NAME_AMD_PID_FILE "pid_file"
@@ -2024,6 +2025,15 @@ char *conf_amd_get_map_name(const char *section)return tmp; } +char *conf_get_map_options (const char *section) +{ +char *tmp =NULL ; +if (section) + tmp =conf_get_string (section,NAME_AMD_MAP_OPTIONS ); + +return tmp; +} +char *conf_amd_get_map_type (const char *section) {char *tmp =NULL ;
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 35/37 autofs-5.1.2 - capture cache option and its settings during parsing
In reply to Ian KentThe amd map format parser was not aware of the optional sync parameter of the cache option.
Make the parser aware of the sync option and capture the cache option and its settings during map parsing.
--- CHANGELOG | 1 + include/parse_amd.h | 7 +++++++ modules/amd_parse.y | 12 +++++++++--- modules/amd_tok.l | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-)
CHANGELOG +1 -0
@@ -32,6 +32,7 @@ xx/xx/2016 autofs-5.1.3 - include amd mount sections mounts in master mounts list. - check for conflicting amd section mounts. - add function conf_get_map_options(). +- capture cache option and its settings during parsing. 15/06/2016 autofs-5.1.2 =======================
include/parse_amd.h +7 -0
@@ -39,9 +39,16 @@#define AMD_DEFAULTS_RESET 0x02000000#define AMD_DEFAULTS_MASK 0xff000000 +#define AMD_CACHE_OPTION_NONE 0x0000 +#define AMD_CACHE_OPTION_INC 0x0001 +#define AMD_CACHE_OPTION_ALL 0x0002 +#define AMD_CACHE_OPTION_REGEXP 0x0004 +#define AMD_CACHE_OPTION_SYNC 0x8000 +struct amd_entry {char *path;unsigned long flags; +unsigned int cache_opts;char *type;char *map_type;char *pref;
modules/amd_parse.y +9 -3
@@ -425,9 +425,14 @@ option_assignment: MAP_OPTION OPTION_ASSIGN FS_TYPE } | MAP_OPTION OPTION_ASSIGN CACHE_OPTION { - sprintf(msg_buf, "option %s is not used, autofs " - "default caching is always used", $1); - amd_info(msg_buf); + if (strncmp($3, "inc", 3)) + entry.cache_opts = AMD_CACHE_OPTION_INC; + else if (strncmp($3, "all", 3)) + entry.cache_opts = AMD_CACHE_OPTION_ALL; + else if (strncmp($3, "re", 2)) + entry.cache_opts = AMD_CACHE_OPTION_REGEXP; + if (strstr($3, "sync")) + entry.cache_opts |= AMD_CACHE_OPTION_SYNC; } ;
@@ -535,6 +540,7 @@ static int amd_msg(const char *s) static void local_init_vars(void) { memset(&entry, 0, sizeof(entry)); + entry.cache_opts = AMD_CACHE_OPTION_NONE; memset(opts, 0, sizeof(opts)); }
modules/amd_tok.l +1 -1
@@ -101,7 +101,7 @@ NOPT ({SSTR}|(({IP4ADDR}(\/{V4MASK})?)|({IP6ADDR}(\/{V6MASK})?))) MAPOPT (fs|type|maptype|pref|sublink|cache) MNTOPT (opts|addopts|remopts) FSOPTS (rhost|rfs|dev|cachedir|mount|unmount|umount|delay) -CHEOPT (mapdefault|none|inc|re|regexp|all) +CHEOPT ((mapdefault|none|inc|re|regexp|all)(,sync)?) MAPTYPE (file|nis|nisplus|ldap|hesiod|exec|ndbm|passwd|union) FSTYPE_LOCAL (link|linkx|lofs|ufs|ext2|ext3|ext4|xfs|jfs|cdfs|cachefs) FSTYPE_NET (nfs|nfsx|nfsl|host)
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 36/37 autofs-5.1.2 - handle map_option cache for top level mounts
In reply to Ian KentIn order to read in the map at mount time autofs top level mounts must be set as browsasble but amd top level mounts that have the map_option cache:=all set need to read in the map without the browse option being set.
--- CHANGELOG | 1 + include/automount.h | 3 +++ lib/master.c | 15 +++++++++++++++ lib/master_parse.y | 16 ++++++++++++++++ man/autofs.conf.5.in | 8 ++++++-- 5 files changed, 41 insertions(+), 2 deletions(-)
CHANGELOG +1 -0
@@ -33,6 +33,7 @@ xx/xx/2016 autofs-5.1.3 - check for conflicting amd section mounts. - add function conf_get_map_options(). - capture cache option and its settings during parsing. +- handle map_option cache for top level mounts. 15/06/2016 autofs-5.1.2 =======================
include/automount.h +3 -0
@@ -528,6 +528,9 @@ struct kernel_mod_version {/* Use symlinks instead of bind mounting local mounts */ #define MOUNT_FLAG_SYMLINK 0x0040 +/* Read amd map even if it's not to be ghosted (browsable) */ +#define MOUNT_FLAG_AMD_CACHE_ALL 0x0080 +struct autofs_point {pthread_t thid;char *path;/* Mount point name */
lib/master.c +15 -0
@@ -983,6 +983,7 @@ static void master_add_amd_mount_section_mounts(struct master *master, time_t agunsigned int ghost =0 ;char *type =NULL ;char *map =NULL ; +char *opts; ret =master_partial_match_mapent (master, path);if (ret) {
@@ -1037,6 +1038,20 @@ static void master_add_amd_mount_section_mounts(struct master *master, time_t ag goto next; } + opts =conf_get_map_options (path); +if (opts) { +/* autofs uses the equivalent of cache:=inc,sync +* (except for file maps which use cache:=all,sync) +* but if the map is large then it may be necessary +* to read the whole map at startup even if browsing +* is is not enabled, so look for cache:=all in the +* map_options configuration entry. +*/ +if (strstr (opts,"cache:=all" )) + entry->ap->flags |=MOUNT_FLAG_AMD_CACHE_ALL ; +free (opts); + } + type =conf_amd_get_map_type (path); argv[0 ] = map; argv[1 ] =NULL ;
lib/master_parse.y +16 -0
@@ -863,6 +863,22 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne if (mode && mode < LONG_MAX) entry->ap->mode = mode; + if (format && !strcmp(format, "amd")) { + char *opts = conf_get_map_options(path); + if (opts) { + /* autofs uses the equivalent of cache:=inc,sync + * (except for file maps which use cache:=all,sync) + * but if the map is large then it may be necessary + * to read the whole map at startup even if browsing + * is is not enabled, so look for cache:=all in the + * map_options configuration entry. + */ + if (strstr(opts, "cache:=all")) + entry->ap->flags |= MOUNT_FLAG_AMD_CACHE_ALL; + free(opts); + } + } + /* source = master_find_map_source(entry, type, format, local_argc, (const char **) local_argv);
man/autofs.conf.5.in +6 -2
@@ -291,8 +291,12 @@ protocol version. .BR cache_duration ", " map_reload_interval ", " map_options .br The map entry cache is continually updated and stale entries -cleaned on re-load, which is done when map changes aredetected -so these configuration entries are not used by autofs. +cleaned on re-load, which is done when map changes are detected +so these configuration entries are not used by autofs. An +exception to this is the case where the map is large. In this +case it may be necessary to read the whole map at startup even if +browsing is is not enabled. Adding the cache:=all option to +map_options can be used to for this. .TP .B localhost_address This is not used within autofs. This configuration option was
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerPATCH 37/37 autofs-5.1.2 - handle amd cache option all in amd type auto mounts
In reply to Ian KentIn order to read in the map at mount time autofs submounts must be set as browasble but amd type auto mounts that have the cache:=all option set need to read in the map without the browse option being set.
--- CHANGELOG | 1 + modules/lookup_ldap.c | 10 ++++++---- modules/lookup_nisplus.c | 10 ++++++---- modules/lookup_sss.c | 10 ++++++---- modules/lookup_yp.c | 10 ++++++---- modules/mount_autofs.c | 3 +++ 6 files changed, 28 insertions(+), 16 deletions(-)
CHANGELOG +1 -0
@@ -34,6 +34,7 @@ xx/xx/2016 autofs-5.1.3 - add function conf_get_map_options(). - capture cache option and its settings during parsing. - handle map_option cache for top level mounts. +- handle amd cache option all in amd type auto mounts. 15/06/2016 autofs-5.1.2 =======================
modules/lookup_ldap.c +6 -4
@@ -2797,11 +2797,13 @@ static int read_one_map(struct autofs_point *ap,int rv, l;/* -* If we don't need to create directories then there's no use -* reading the map. We always need to read the whole map for -* direct mounts in order to mount the triggers. +* If we don't need to create directories (or don't need +* to read an amd cache:=all map) then there's no use +* reading the map. We always need to read the whole map +* for direct mounts in order to mount the triggers. */ -if (!(ap->flags &MOUNT_FLAG_GHOST ) && ap->type !=LKP_DIRECT ) { +if (ap->type !=LKP_DIRECT && + !(ap->flags & (MOUNT_FLAG_GHOST |MOUNT_FLAG_AMD_CACHE_ALL ))) {debug (ap->logopt,"map read not needed, so not done" );return NSS_STATUS_SUCCESS ; }
modules/lookup_nisplus.c +6 -4
@@ -239,11 +239,13 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context)master_source_current_signal (ap->entry);/* -* If we don't need to create directories then there's no use -* reading the map. We always need to read the whole map for -* direct mounts in order to mount the triggers. +* If we don't need to create directories (or don't need +* to read an amd cache:=all map) then there's no use +* reading the map. We always need to read the whole map +* for direct mounts in order to mount the triggers. */ -if (!(ap->flags &MOUNT_FLAG_GHOST ) && ap->type !=LKP_DIRECT ) { +if (ap->type !=LKP_DIRECT && + !(ap->flags & (MOUNT_FLAG_GHOST |MOUNT_FLAG_AMD_CACHE_ALL ))) {debug (ap->logopt,"map read not needed, so not done" );return NSS_STATUS_SUCCESS ; }
modules/lookup_sss.c +6 -4
@@ -402,11 +402,13 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context) mc = source->mc;/* -* If we don't need to create directories then there's no use -* reading the map. We always need to read the whole map for -* direct mounts in order to mount the triggers. +* If we don't need to create directories (or don't need +* to read an amd cache:=all map) then there's no use +* reading the map. We always need to read the whole map +* for direct mounts in order to mount the triggers. */ -if (!(ap->flags &MOUNT_FLAG_GHOST ) && ap->type !=LKP_DIRECT ) { +if (ap->type !=LKP_DIRECT && + !(ap->flags & (MOUNT_FLAG_GHOST |MOUNT_FLAG_AMD_CACHE_ALL ))) {debug (ap->logopt,"map read not needed, so not done" );return NSS_STATUS_SUCCESS ; }
modules/lookup_yp.c +6 -4
@@ -401,11 +401,13 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context)master_source_current_signal (ap->entry);/* -* If we don't need to create directories then there's no use -* reading the map. We always need to read the whole map for -* direct mounts in order to mount the triggers. +* If we don't need to create directories (or don't need +* to read an amd cache:=all map) then there's no use +* reading the map. We always need to read the whole map +* for direct mounts in order to mount the triggers. */ -if (!(ap->flags &MOUNT_FLAG_GHOST ) && ap->type !=LKP_DIRECT ) { +if (ap->type !=LKP_DIRECT && + !(ap->flags & (MOUNT_FLAG_GHOST |MOUNT_FLAG_AMD_CACHE_ALL ))) {debug (ap->logopt,"map read not needed, so not done" );return NSS_STATUS_SUCCESS ; }
modules/mount_autofs.c +3 -0
@@ -289,6 +289,9 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, nap->pref = am_entry->pref; am_entry->pref =NULL ; } + +if (am_entry->cache_opts &AMD_CACHE_OPTION_ALL ) + nap->flags |=MOUNT_FLAG_AMD_CACHE_ALL ; }if (handle_mounts_startup_cond_init (&suc)) {
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
Ian Kent
maintainerQuoted 17 lines · Ian Kent
Hi all,
The patch queue is well overdue for a commit but since there's been increased contributions for others recently I thought it would be useful to post the patches for review and give a brief description of what's in the queue and what still needs work.
Many of the patches are striaght forward and I expect to commit then in a week or so. Also keep in mind the commit order might be different when the commit is actually done.
The patches around those titled "autofs-5.1.2 - wait for master map available at start" and "autofs-5.1.2 - add master read wait option" have been around for quite a while and have been a problem in the past (which is why they haven't been committed yet) so I'm not sure about them yet.
Quoted 4 lines
The series to add browse support for amd maps is not yet complete so they will likely stay in the queue a bit longer. But I am keen to get this functionality into a release as I know it is something that at least a few people would like.
The patches up to and including
"autofs-5.1.2 - add sss master map wait config option"
plus one additional patch have been committed to the repository and pushed to https://www.kernel.org/pub/linux/daemons/autofs/v5/patches-5.1.3/.
For anyone interested the additional patch is "autofs-5.1.2 - fix quoted key handling in sanitize_path()" a bug fix for quoting map keys in non-master map maps.
Ian
--
To unsubscribe from this list: send the line "unsubscribe autofs" in