Bug#674733: multipath-tools: stop target fails if no device mapper reported device available
Ritesh Raj Sarraf
rrs at debian.org
Sun May 27 03:51:13 UTC 2012
Package: multipath-tools
Version: 0.4.9+git0.4dfdaf2b-4
Severity: important
This could happen if you have no dm understood root device.
rrs at champaran:~/Community/Packaging/pkg-lvm/multipath-tools (master)$
sudo /etc/init.d/multipath-tools stop
Device does not exist.
Command failed
If a user's setup is direct access to scsi device, be it either sd
naming scheme or persistent names, it appears that no entry for it is
created in /sys/block sysfs hierarchy.
In this scenario, the multipath-tools' stop target fails thusly breaking
all upgrades.
Current resolution is to run the init script to survive errors, i.e. "!sh
-e"
-- Package-specific info:
Contents of /etc/multipath.conf:
blacklist {
wwid "1Seagate FreeAgent GoFlex*"
wwid "1Seagate FA GoFlex Desk*"
wwid "1Seagate_FreeAgent_GoFlex*"
}
-- System Information:
Debian Release: wheezy/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (100, 'experimental'), (1, 'quantal')
Architecture: amd64 (x86_64)
Kernel: Linux 3.3.0-trunk-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages multipath-tools depends on:
ii initscripts 2.88dsf-22.1
ii kpartx 0.4.9+git0.4dfdaf2b-4
ii libaio1 0.3.109-2
ii libc6 2.13-32
ii libdevmapper1.02.1 2:1.02.74-3
ii libreadline6 6.2-8
ii lsb-base 4.1+Debian3
ii udev 175-3.1
multipath-tools recommends no packages.
Versions of packages multipath-tools suggests:
pn multipath-tools-boot <none>
-- Configuration Files:
/etc/init.d/multipath-tools changed:
PATH=/sbin:/bin:/usr/sbin/:/usr/bin
DAEMON=/sbin/multipathd
NAME=multipathd
DESC="multipath daemon"
syspath=/sys/block
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
if [ -f /etc/default/multipath-tools ] ; then
. /etc/default/multipath-tools
fi
set -e
teardown_slaves()
{
cd $1;
if [ -d "slaves" ]; then
for slave in slaves/*;
do
if [ "$slave" = "slaves/*" ]; then
read dev < $1/dev
tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
if ! [ -z $tablename ]; then
log_daemon_msg "Root is on a multipathed device, multipathd can not be stopped"
exit 1
fi
else
local_slave=`readlink -f $slave`;
teardown_slaves $local_slave;
fi
done
else
read dev < $1/dev
tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
if ! [ -z $tablename ]; then
log_daemon_msg "Root is on a multipathed device, multipathd can not be stopped"
exit 1
fi
fi
}
case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --oknodo --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
log_end_msg $?
;;
stop)
root_dev=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/mtab)
dm_num=`dmsetup info -c --noheadings -o minor $root_dev`
if [ $? -ne 0 ]; then
# Looks like we couldn't find a device mapper root device
# But we shouldn't bail out here otherwise, the stop target and the
# upgrade processes will break
echo;
else
root_dm_device="dm-$dm_num"
[ -d $syspath/$root_dm_device ] && teardown_slaves $syspath/$root_dm_device
fi
log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
log_end_msg $?
;;
reload|force-reload)
log_daemon_msg "Reloading $DESC" "$NAME"
start-stop-daemon --stop --signal 1 --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
log_end_msg $?
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
N=/etc/init.d/multipath-tools
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
-- no debconf information
More information about the pkg-lvm-maintainers
mailing list