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