From 9b22cb05aae498249e4ad339cb0fb53554233b3b Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 10 Oct 2023 14:11:38 +0800 Subject: [PATCH] - add changes for bug 2232402. --- ....1.8-allow-null-map-in-indirect-maps.patch | 111 ++++++++++++++++++ autofs.spec | 11 +- 2 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 autofs-5.1.8-allow-null-map-in-indirect-maps.patch diff --git a/autofs-5.1.8-allow-null-map-in-indirect-maps.patch b/autofs-5.1.8-allow-null-map-in-indirect-maps.patch new file mode 100644 index 0000000..a5b8a54 --- /dev/null +++ b/autofs-5.1.8-allow-null-map-in-indirect-maps.patch @@ -0,0 +1,111 @@ +autofs-5.1.8 - allow -null map in indirect maps + +From: Ian Kent + +We have had reports of GUI programs (such as Nautilus) probing for files +such as .hidden in the parent directory of the directory being accessed. + +If using an indirect mount map with a wildcard map entry autofs is duty +bound to try and mount these which usually results in a mount failure but +can also cause lengthy delays in some cases. + +There are some challenges to modifying application code and even if it +can be done it's always open to being broken later by developers that +aren't aware of the reasoning behind the original changes. + +Now, there is a machanism in autofs that can be used to ignore certain +map entries, the "builtin map -null", see auto.master(5). Currently it +can be used only in the master map but this change extends it to be used +in indirect mount maps as well. In this way it can be used to handle +problematic entries by simply adding a map entry that uses the builtin +-null map. + +For example: +.hidden -null +* someserver:/remote/home/& + +This mechanism is not standard so if one is using systems other than +those with Linux autofs and central map storage, such as LDAP, then +it would be necessary to configure nsswitch to ensure the files map +source is consulted first followed by the remote map source. Then the +-null map entries included in a local file map that uses plus map +inclusion to move on the the central map source if there is no match. + +For example, in /etc/auto.home we can have: +.hidden -null ++auto.home + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + daemon/indirect.c | 18 ++++++++++++++++++ + man/auto.master.5.in | 9 +++++++-- + 3 files changed, 26 insertions(+), 2 deletions(-) + +--- autofs-5.1.4.orig/CHANGELOG ++++ autofs-5.1.4/CHANGELOG +@@ -150,6 +150,7 @@ + - fix some sss error return cases. + - fix incorrect matching of cached wildcard key. + - fix expire retry looping. ++- allow -null map in indirect maps. + + xx/xx/2018 autofs-5.1.5 + - fix flag file permission. +--- autofs-5.1.4.orig/daemon/indirect.c ++++ autofs-5.1.4/daemon/indirect.c +@@ -799,6 +799,8 @@ int handle_packet_missing_indirect(struc + /* Check if we recorded a mount fail for this key anywhere */ + me = lookup_source_mapent(ap, pkt->name, LKP_DISTINCT); + if (me) { ++ unsigned int len; ++ + if (me->status >= monotonic_time(NULL)) { + ops->send_fail(ap->logopt, ap->ioctlfd, + pkt->wait_queue_token, -ENOENT); +@@ -807,6 +809,22 @@ int handle_packet_missing_indirect(struc + pthread_setcancelstate(state, NULL); + return 0; + } ++ ++ len = me->mapent ? strlen(me->mapent) : 0; ++ if (me->mapent && len >= 5 && *me->mapent == '-') { ++ char sep = *(me->mapent + 5); ++ ++ if (sep == 0 || sep == ' ' || sep == ',') { ++ if (!strncmp(me->mapent, "-null", 5)) { ++ ops->send_fail(ap->logopt, ap->ioctlfd, ++ pkt->wait_queue_token, -ENOENT); ++ cache_unlock(me->mc); ++ master_mutex_unlock(); ++ pthread_setcancelstate(state, NULL); ++ return 0; ++ } ++ } ++ } + cache_unlock(me->mc); + } + +--- autofs-5.1.4.orig/man/auto.master.5.in ++++ autofs-5.1.4/man/auto.master.5.in +@@ -267,13 +267,18 @@ master map entry. + If "\-null" is given as the map it is used to tell automount(8) to ignore a subsequent + master map entry with the given path. + .P +-It can only be used for paths that appear in the master map (or in direct mount maps). ++It can be used for paths that appear in the master map or in direct mount maps (but ++not in direct mount maps themselves) or as a key in an indirect mount map. ++.P ++An indirect mount map key can be nulled. If so the map key is ignored and does not ++result in a mount attempt (essentially the key lookup is abandoned early on). + .P + An indirect mount map top level mount point path can be nulled. If so no mounts from + the nulled mount are performed (essentially it isn't mounted). + .P + Direct mount map path entries can be nulled. Since they must be present at startup +-they are (notionally) part of the master map. ++they are (notionally) part of the master map so direct mount paths that use the -null ++map may be used in the master map to ignore subsequent direct mount map entries. + .P + A nulled master map entry path will ignore a single subsequent matching entry. Any + matching entry following that will be treated as it normally would be. An example diff --git a/autofs.spec b/autofs.spec index 311640f..f291a5a 100644 --- a/autofs.spec +++ b/autofs.spec @@ -8,7 +8,7 @@ Summary: A tool for automatically mounting and unmounting filesystems Name: autofs Version: 5.1.4 -Release: 109%{?dist} +Release: 110%{?dist} Epoch: 1 License: GPLv2+ Group: System Environment/Daemons @@ -326,6 +326,8 @@ Patch324: autofs-5.1.8-fix-some-sss-error-return-cases.patch Patch325: autofs-5.1.8-fix-incorrect-matching-of-cached-wildcard-key.patch Patch326: autofs-5.1.8-fix-expire-retry-looping.patch +Patch327: autofs-5.1.8-allow-null-map-in-indirect-maps.patch + %if %{with_systemd} BuildRequires: systemd-units BuildRequires: systemd-devel @@ -692,6 +694,8 @@ echo %{version}-%{release} > .version %patch325 -p1 %patch326 -p1 +%patch327 -p1 + %build LDFLAGS=-Wl,-z,now %configure --disable-mount-locking --enable-ignore-busy --with-libtirpc --without-hesiod %{?systemd_configure_arg:} @@ -786,6 +790,11 @@ fi %dir /etc/auto.master.d %changelog +* Mon Sep 18 2023 Ian Kent - 5.1.4-110 +- bz2232402 - autofs attempts to mount nonexistant ".hidden" filesystems + - allow -null map in indirect maps. +- Resolves: rhbz#2232402 + * Fri Jul 14 2023 Ian Kent - 5.1.4-109 - bz2213267 - filesystems mount and expire immediately - fix expire retry looping.