You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
autofs-5.1.0 - fix hosts map update on reload |
|
|
|
From: Ian Kent <ikent@redhat.com> |
|
|
|
Commit aedfd5aa - "amd lookup fix host mount naming" introduced a |
|
regression when updating sun format maps. |
|
|
|
The amd host mount type assumes the lookup name is the host name for |
|
the host mount but amd uses ${rhost} for this. |
|
|
|
This introduces the possibility of multiple concurrent mount requests |
|
since constructing a mount tree that isn't under the lookup name can't |
|
take advantage of the kernel queuing of other concurrent lookups while |
|
the mount tree is constructed. |
|
|
|
Consequently multi-mount updates (currently only done for the internal |
|
hosts map which the amd parser also uses for its hosts map) can't be |
|
allowed for amd mounts. |
|
--- |
|
CHANGELOG | 1 + |
|
modules/parse_sun.c | 37 ++++++++++++++++++++++++++++--------- |
|
2 files changed, 29 insertions(+), 9 deletions(-) |
|
|
|
--- autofs-5.0.7.orig/CHANGELOG |
|
+++ autofs-5.0.7/CHANGELOG |
|
@@ -158,6 +158,7 @@ |
|
- update man page autofs(8) for systemd. |
|
- fix fix master map type check. |
|
- fix typo in update_hosts_mounts(). |
|
+- fix hosts map update on reload. |
|
|
|
25/07/2012 autofs-5.0.7 |
|
======================= |
|
--- autofs-5.0.7.orig/modules/parse_sun.c |
|
+++ autofs-5.0.7/modules/parse_sun.c |
|
@@ -1356,16 +1356,35 @@ int parse_mount(struct autofs_point *ap, |
|
} |
|
|
|
cache_multi_writelock(me); |
|
- /* Someone beat us to it, return success */ |
|
- if (me->multi) { |
|
- free(options); |
|
- cache_multi_unlock(me); |
|
- cache_unlock(mc); |
|
- pthread_setcancelstate(cur_state, NULL); |
|
- return 0; |
|
- } |
|
/* So we know we're the multi-mount root */ |
|
- me->multi = me; |
|
+ if (!me->multi) |
|
+ me->multi = me; |
|
+ else { |
|
+ /* |
|
+ * The amd host mount type assumes the lookup name |
|
+ * is the host name for the host mount but amd uses |
|
+ * ${rhost} for this. |
|
+ * |
|
+ * This introduces the possibility of multiple |
|
+ * concurrent mount requests since constructing a |
|
+ * mount tree that isn't under the lookup name can't |
|
+ * take advantage of the kernel queuing of other |
|
+ * concurrent lookups while the mount tree is |
|
+ * constructed. |
|
+ * |
|
+ * Consequently multi-mount updates (currently only |
|
+ * done for the internal hosts map which the amd |
|
+ * parser also uses for its hosts map) can't be |
|
+ * allowed for amd mounts. |
|
+ */ |
|
+ if (source->flags & MAP_FLAG_FORMAT_AMD) { |
|
+ free(options); |
|
+ cache_multi_unlock(me); |
|
+ cache_unlock(mc); |
|
+ pthread_setcancelstate(cur_state, NULL); |
|
+ return 0; |
|
+ } |
|
+ } |
|
|
|
age = me->age; |
|
|
|
|