Hello community, here is the log from the commit of package autofs for openSUSE:Factory checked in at Fri Apr 8 11:10:53 CEST 2011.
-------- --- autofs/autofs.changes 2011-03-03 15:28:14.000000000 +0100 +++ /mounts/work_src_done/STABLE/autofs/autofs.changes 2011-04-07 16:40:01.000000000 +0200 @@ -1,0 +2,36 @@ +Mon Apr 4 21:04:35 UTC 2011 - [email protected] + +- init script: use misc device (/dev/autofs) by default, unless it + is explicitly disabled in sysconfig (bnc#684997) + +------------------------------------------------------------------- +Mon Apr 4 20:49:38 UTC 2011 - [email protected] + +- fix out of order locking in readmap (bnc#667967) + +------------------------------------------------------------------- +Mon Apr 4 20:40:04 UTC 2011 - [email protected] + +- add upstream fixes for the "non-expiring mounts" problem and + put the "fix direct map not updating on reread" patch back in + (bnc#677143) + +------------------------------------------------------------------- +Tue Mar 29 17:47:28 UTC 2011 - [email protected] + +- ship init script as a source file and not as a patch against the + upstream sample + +------------------------------------------------------------------- +Tue Mar 29 14:54:08 UTC 2011 - [email protected] + +- update 5.0.5 upstream patches to 20110318, fixing one bug: + * replace GPLv3 code (bnc#682268) + +------------------------------------------------------------------- +Thu Mar 24 21:04:16 UTC 2011 - [email protected] + +- revert "fix direct map not updating on reread" due to expiration + problems (bnc#677143) + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- autofs-5.0.5-upstream-patches-20110302.bz2 autofs-suse-autofs_init.patch New: ---- autofs-5.0.5-fix-next-task-list-update.patch autofs-5.0.5-fix-out-of-order-locking-in-readmap.patch autofs-5.0.5-fix-stale-map-read.patch autofs-5.0.5-upstream-patches-20110318.bz2 autofs.init ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ autofs.spec ++++++ --- /var/tmp/diff_new_pack.k68aQT/_old 2011-04-08 11:10:09.000000000 +0200 +++ /var/tmp/diff_new_pack.k68aQT/_new 2011-04-08 11:10:09.000000000 +0200 @@ -26,21 +26,24 @@ Group: System/Daemons AutoReqProv: on Version: 5.0.5 -Release: 17 +Release: 18 Summary: A Kernel-Based Automounter BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: ftp://ftp.kernel.org/pub/linux/daemons/autofs/v5/%{name}-%{version}.tar.bz2 Source1: sysconfig.autofs +Source2: autofs.init Source3: autofs.schema Source4: README.SuSE.ldap Source5: README.SuSE Source7: NetworkManager-autofs Source8: get-upstream-patches -%define patchdate 20110302 +%define patchdate 20110318 Patch0: autofs-%{version}-upstream-patches-%{patchdate}.bz2 -Patch1: autofs-5.0.5-invalid-ghost-dirs.patch +Patch1: autofs-5.0.5-fix-next-task-list-update.patch +Patch2: autofs-5.0.5-fix-stale-map-read.patch +Patch3: autofs-5.0.5-invalid-ghost-dirs.patch +Patch4: autofs-5.0.5-fix-out-of-order-locking-in-readmap.patch Patch10: autofs-suse-auto_master_default.patch -Patch11: autofs-suse-autofs_init.patch Patch12: autofs-suse-build.patch PreReq: %fillup_prereq %insserv_prereq aaa_base Recommends: nfs-client @@ -66,8 +69,10 @@ # %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %patch10 -p1 -%patch11 -p1 %patch12 -p1 %build @@ -85,9 +90,10 @@ %install make install INSTALLROOT=$RPM_BUILD_ROOT -ln -s ../../etc/init.d/autofs $RPM_BUILD_ROOT/usr/sbin/rcautofs mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates install -m 644 %{S:1} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.autofs +install -m 755 %{S:2} $RPM_BUILD_ROOT/etc/init.d/autofs +ln -s ../../etc/init.d/autofs $RPM_BUILD_ROOT/usr/sbin/rcautofs mkdir -p $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d install -m 755 %{S:7} $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/autofs # will be installed by fillup scripts ++++++ README.SuSE.ldap ++++++ --- /var/tmp/diff_new_pack.k68aQT/_old 2011-04-08 11:10:09.000000000 +0200 +++ /var/tmp/diff_new_pack.k68aQT/_new 2011-04-08 11:10:09.000000000 +0200 @@ -3,7 +3,7 @@ ---------------- You can configure autofs via LDAP using the nis.schema or rfc2307bis.schema. -You can find this schema at /etc/openldap/schema/nis.schema and +You can find this schema at /etc/openldap/schema/nis.schema and /etc/openldap/schema/rfc2307bis.schema resp. 1. Change the "automount:" entry in /etc/nsswitch.conf to @@ -31,7 +31,7 @@ dn: cn=/mounts,nisMapName=auto.master,ou=AUTOFS,dc=example,dc=org objectClass: nisObject -nisMapName: auto.master +nisMapName: auto.master cn: /mounts nisMapEntry: ldap ldapserver.example.org:nisMapName=auto.mounts,ou=AUTOFS,dc=example,dc=org ++++++ autofs-5.0.5-fix-next-task-list-update.patch ++++++ From: Ian Kent <[email protected]> Subject: [PATCH 1/2] autofs-5.0.5 - fix next task list update When the state queue task manager transfered an automount point pending task to its task queue for execution the state queue as mistakenly being seen as empty when the completing task was the only task in the state queue. --- CHANGELOG | 1 + daemon/state.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 347d7d7..a9687b7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -62,6 +62,7 @@ - fix mountd vers retry. - fix expire race. - replace GPLv3 code. +- fix next task list update. 03/09/2009 autofs-5.0.5 ----------------------- diff --git a/daemon/state.c b/daemon/state.c index 38617c3..85587bd 100644 --- a/daemon/state.c +++ b/daemon/state.c @@ -1150,11 +1150,13 @@ remove: next = list_entry((&task->pending)->next, struct state_queue, pending); - list_del_init(&next->pending); - list_add_tail(&next->list, p); - list_del(&task->list); free(task); + + list_del_init(&next->pending); + list_add_tail(&next->list, head); + if (p == head) + p = head->next; } if (list_empty(head)) ++++++ autofs-5.0.5-fix-out-of-order-locking-in-readmap.patch ++++++ autofs-5.0.5 - fix out of order locking in readmap From: Ian Kent <[email protected]> When re-reading the master map and a mount lookup for a particular map entry arrives at the same time a map source is being added to the map entry and a map entry re-read is also initiated at the same time an out of order mutex locking bug which results in a hang. --- CHANGELOG | 1 + lib/master.c | 8 ++------ 2 files changed, 3 insertions(+), 6 deletions(-) Index: autofs-5.0.5/lib/master.c =================================================================== --- autofs-5.0.5.orig/lib/master.c +++ autofs-5.0.5/lib/master.c @@ -624,8 +624,6 @@ struct master_mapent *master_find_mapent { struct list_head *head, *p; - master_mutex_lock(); - head = &master->mounts; list_for_each(p, head) { struct master_mapent *entry; @@ -638,8 +636,6 @@ struct master_mapent *master_find_mapent } } - master_mutex_unlock(); - return NULL; } @@ -716,9 +712,7 @@ struct master_mapent *master_new_mapent( void master_add_mapent(struct master *master, struct master_mapent *entry) { - master_mutex_lock(); list_add_tail(&entry->list, &master->mounts); - master_mutex_unlock(); return; } @@ -826,6 +820,7 @@ int master_read_master(struct master *ma * We need to clear and re-populate the null map entry cache * before alowing anyone else to use it. */ + master_mutex_lock(); if (master->nc) { cache_writelock(master->nc); nc = master->nc; @@ -844,6 +839,7 @@ int master_read_master(struct master *ma master_init_scan(); lookup_nss_read_master(master, age); cache_unlock(nc); + master_mutex_unlock(); if (!master->read_fail) master_mount_mounts(master, age, readall); Index: autofs-5.0.5/CHANGELOG =================================================================== --- autofs-5.0.5.orig/CHANGELOG +++ autofs-5.0.5/CHANGELOG @@ -64,6 +64,7 @@ - replace GPLv3 code. - fix next task list update. - fix stale map read. +- fix out of order locking in readmap. 03/09/2009 autofs-5.0.5 ----------------------- ++++++ autofs-5.0.5-fix-stale-map-read.patch ++++++ From: Ian Kent <[email protected]> Subject: [PATCH 2/2] autofs-5.0.5 - fix stale map read A previous patch to fix direct maps not updating on re-read has a side effect of causing maps to always be re-read on lookup. This is because, following the application of the previous patch, the map stale status is no longer being updated on a successful map read. --- CHANGELOG | 1 + daemon/lookup.c | 1 + daemon/state.c | 1 - include/master.h | 1 + lib/master.c | 37 +++++++++++++++++++++++++------------ 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a9687b7..fcf9145 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -63,6 +63,7 @@ - fix expire race. - replace GPLv3 code. - fix next task list update. +- fix stale map read. 03/09/2009 autofs-5.0.5 ----------------------- diff --git a/daemon/lookup.c b/daemon/lookup.c index 36e60c9..0f7051b 100644 --- a/daemon/lookup.c +++ b/daemon/lookup.c @@ -1139,6 +1139,7 @@ int lookup_prune_cache(struct autofs_point *ap, time_t age) cache_readlock(map->mc); lookup_prune_one_cache(ap, map->mc, age); pthread_cleanup_pop(1); + clear_stale_instances(map); map->stale = 0; map = map->next; } diff --git a/daemon/state.c b/daemon/state.c index 85587bd..3645440 100644 --- a/daemon/state.c +++ b/daemon/state.c @@ -501,7 +501,6 @@ static void *do_readmap(void *arg) pthread_cleanup_pop(1); pthread_cleanup_pop(1); pthread_cleanup_pop(1); - lookup_prune_cache(ap, now); } pthread_cleanup_pop(1); diff --git a/include/master.h b/include/master.h index bef59d3..1c1a7d5 100644 --- a/include/master.h +++ b/include/master.h @@ -89,6 +89,7 @@ struct map_source * master_find_source_instance(struct map_source *, const char *, const char *, int, const char **); struct map_source * master_add_source_instance(struct map_source *, const char *, const char *, time_t, int, const char **); +void clear_stale_instances(struct map_source *); void send_map_update_request(struct autofs_point *); void master_source_writelock(struct master_mapent *); void master_source_readlock(struct master_mapent *); diff --git a/lib/master.c b/lib/master.c index 95bd3fb..4b48883 100644 --- a/lib/master.c +++ b/lib/master.c @@ -465,7 +465,26 @@ master_add_source_instance(struct map_source *source, const char *type, const ch return new; } -static void check_stale_instances(struct map_source *source) +static int check_stale_instances(struct map_source *source) +{ + struct map_source *map; + + if (!source) + return 0; + + map = source->instance; + while (map) { + if (map->stale) + return 1; + if (check_stale_instances(map)) + return 1; + map = map->next; + } + + return 0; +} + +void clear_stale_instances(struct map_source *source) { struct map_source *map; @@ -474,11 +493,9 @@ static void check_stale_instances(struct map_source *source) map = source->instance; while (map) { - if (map->stale) { - source->stale = 1; - break; - } - check_stale_instances(map->instance); + clear_stale_instances(map); + if (map->stale) + map->stale = 0; map = map->next; } @@ -496,12 +513,8 @@ void send_map_update_request(struct autofs_point *ap) map = ap->entry->maps; while (map) { - check_stale_instances(map); - map = map->next; - } - - map = ap->entry->maps; - while (map) { + if (check_stale_instances(map)) + map->stale = 1; if (map->stale) { need_update = 1; break; ++++++ autofs.init ++++++ #!/bin/bash # # Copyright (C) 2011 SUSE Linux Products GmbH, Nuernberg, Germany. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # ### BEGIN INIT INFO # Provides: autofs # Required-Start: $network $syslog $remote_fs # Should-Start: $portmap ypbind keyserv ldap nfsserver network-remotefs # Required-Stop: $network $syslog $remote_fs # Should-Stop: $portmap ypbind keyserv ldap nfsserver network-remotefs # Default-Start: 3 5 # Default-Stop: # Short-Description: automatic mounting of filesystems # Description: Start the autofs daemon for automatic mounting of filesystems. ### END INIT INFO # # Location of the automount daemon and the init directory # DAEMON=/usr/sbin/automount prog=`basename $DAEMON` MODULE="autofs4" DEVICE="autofs" confdir=/etc/sysconfig PIDFILE=/var/run/automount.pid test -x $DAEMON || exit 5 PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH . /etc/rc.status # # Load customized configuration settings # if [ -r $confdir/autofs ]; then . $confdir/autofs fi function start() { # Make sure autofs4 module is loaded if ! grep -q autofs /proc/filesystems; then # Try load the autofs4 module fail if we can't modprobe -q $MODULE >/dev/null 2>&1 if [ $? -eq 1 ]; then echo "Error: failed to load $MODULE module." return 1 fi elif ([ -f /proc/modules ] && lsmod) | grep -q autofs[^4]; then # Wrong autofs filesystem module loaded echo echo "Error: autofs kernel module is loaded, $MODULE required" return 1 fi # Use the AutoFS misc device unless it is explicitly disabled if [ -z "$USE_MISC_DEVICE" -o "x$USE_MISC_DEVICE" = "xyes" ]; then sleep 1 if [ -e "/proc/misc" ]; then MINOR=`awk "/$DEVICE/ {print \\$1}" /proc/misc` if [ -n "$MINOR" -a ! -c "/dev/$DEVICE" ]; then mknod -m 0600 /dev/$DEVICE c 10 $MINOR fi fi if [ -x /sbin/restorecon -a -c /dev/$DEVICE ]; then /sbin/restorecon /dev/$DEVICE fi else if [ -c /dev/$DEVICE ]; then rm /dev/$DEVICE fi fi if [ "$LOCAL_OPTIONS" ]; then AUTOFS_OPTIONS="-O $LOCAL_OPTIONS $AUTOFS_OPTIONS" fi /sbin/startproc -w $DAEMON -p $PIDFILE $AUTOFS_OPTIONS return $? } function stop() { # Send SIGTERM first and set a maximum wait time of 45 seconds # before sending SIGKILL /sbin/killproc -t 45 -p $PIDFILE $DAEMON } RETVAL=0 case "$1" in start) echo -n "Starting $prog " # Check if already running if ! /sbin/checkproc $DAEMON; then start fi rc_status -v ;; stop) echo -n "Shutting down $prog " stop rc_status -v ;; force-stop) $0 stop ;; try-restart|condrestart) ## Do a restart only if the service was active before. ## Note: try-restart is now part of LSB (as of 1.9). if test "$1" = "condrestart"; then echo "${attn}Use try-restart ${done}(LSB)${attn}${norm}" fi $0 status if test $? = 0; then $0 restart else rc_reset # Not running is not a failure. fi # Remember status and be quiet rc_status ;; restart) $0 stop $0 start rc_status ;; force-reload|reload) echo -n "Reload service $prog " /sbin/killproc -HUP $DAEMON rc_status -v ;; force-expire) echo -n "Forcing expire of auto mounted filesystems " /sbin/killproc -USR1 $DAEMON rc_status -v ;; status) echo -n "Checking for service $prog " /sbin/checkproc $DAEMON # NOTE: rc_status knows that we called this init script with # "status" option and adapts its messages accordingly. rc_status -v ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|reload|force-expire}" exit 1 ;; esac rc_exit ++++++ sysconfig.autofs ++++++ --- /var/tmp/diff_new_pack.k68aQT/_old 2011-04-08 11:10:09.000000000 +0200 +++ /var/tmp/diff_new_pack.k68aQT/_new 2011-04-08 11:10:09.000000000 +0200 @@ -18,7 +18,7 @@ ## Type: string ## Default: "yes" # -# Determine whether LOCAL_OPTIONS are appended to map entry options +# Determine whether LOCAL_OPTIONS are appended to map entry options # or if the map entry options replace the global options # (program default "yes", append options). APPEND_OPTIONS="yes" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
