On Sun, 13 Mar 2005, Steinar H. Gunderson wrote:

> On Sun, Mar 13, 2005 at 11:10:42PM +1100, Tim Connors wrote:
> > If restarting autofs when a mountpoint is busy, or if the daemon has
> > been killed manually, then the script never gets around to doing
> > anything, failing midsentence, without printing an proper error
> > message, because the start-stop-daemon isn't protected, despite the
> > error code being explicitly checked thereafter:
> > 
> > 30600,43>  /etc/init.d/autofs restart
> > Stopping automounter:1-0-23:03:30, Sun Mar 13 [EMAIL 
> > PROTECTED]:/home/tconnors (bash)
> 
> I'll forward this upstream, but I think in general "set -e" makes a lot more
> sense than just silently go on if anything unexpected would fail. To me, it
> looks like the init script should simply check the return value of
> start-stop-daemon; I don't think just removing "set -e" is the magic bullet.

Personally I'd prefer not to use the set -e.
It is included because the Debian patch sets included it.

At first glance it appears this is may be a case where we need to 
explicitly turn this of to get the required behaviour.

> 
> (Rest of the mail kept for Ian and the others on the autofs mailing list :-) )
> 
> > Since it makes sense to run restart when the daemon could possibly be
> > not there (since restart is the automatic thing to do upon an
> > upgrade), and since it makes sense to restart the daemon when a
> > mountpoint is busy (new processes will get the new mountpoint with new
> > mount flags, old processes will continue to use the stale mount
> > point), then I think the proper thing to do is to print the message,
> > and then just continue as before.
> > 
> > Is `set -e' really the right thing to do?  I think a wise man
> > (possibly Dijkstra) once said "don't check for errors you don't
> > explicitly know how to handle".  Since we already check for all
> > conceivable errors, then does an extra `set -e' help anything?  It
> > only seems to cause us to not issue correct errors when we really do
> > fail -- see also bug 295480.
> > 
> > Relevant trace follows:
> > 
> > 30599,42> bash -x /etc/init.d/autofs restart
> > + FLAGS='defaults 21'
> > + DAEMON=/usr/sbin/automount
> > ...
> > + debian restart
> > + set -e
> > + case "$1" in
> > + debian stop
> > + set -e
> > + case "$1" in
> > + echo -n 'Stopping automounter:'
> > Stopping automounter:+ umount_loopback
> > ++ LC_ALL=C
> > ++ awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts
> > + loops=
> > ++ LC_ALL=C
> > ++ awk '!/^#/ && $1 ~ /^automount/ {print $2}' /proc/mounts
> > + automounts=/var/autofs/net
> > ++ LC_ALL=C
> > ++ awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts
> > + loopmnts=
> > + any=0
> > ++ ls /var/run/autofs/_var_autofs_net.pid
> > + for file in '`ls /var/run/autofs/*.pid 2>/dev/null`'
> > + '[' -e /var/run/autofs/_var_autofs_net.pid ']'
> > + any=1
> > ++ head -n 1 /var/run/autofs/_var_autofs_net.pid
> > + pid=31598
> > ++ ps -wwo cmd= 31598
> > ++ sed -e 's,.* --pid-file=/var/run/autofs/\([^ ]*\)\.pid.*,\1,; s,_,/,g'
> > + mnt=
> > + start-stop-daemon --stop --quiet --retry USR2/20 --pidfile 
> > /var/run/autofs/_var_autofs_net.pid --exec /usr/sbin/automount
> > 1-0-23:01:24, Sun Mar 13 [EMAIL PROTECTED]:/home/tconnors (bash)
> 
> /* Steinar */
> -- 
> Homepage: http://www.sesse.net/
> 
> _______________________________________________
> autofs mailing list
> autofs@linux.kernel.org
> http://linux.kernel.org/mailman/listinfo/autofs
> 



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to