Bug#706210: multipath-tools: "multipath -v LEVEL" hangs

Sebastian Kotthoff sebastian at informatik.uni-mannheim.de
Fri Apr 26 12:01:21 UTC 2013


Package: multipath-tools
Version: 0.4.9+git0.4dfdaf2b-6
Severity: important

Hi,

"multipath -v LEVEL" hangs for me on debian 7 for a fibre-channel SAN.

The command is executet from /etc/init.d/multipath-tools-boot, because of
this the system is completly hanging during boot. I had to fix this with
an live-CD.
You can test it well on a normal command-line. There you kill it with
STRG+C

The command works on a fresh installed debian 7 at a virtual maschine
without any fibre-channel and only local disk /dev/vda (virtio).
If I execute it on a blade where "scsi_transport_fc      39180  1 qla2xxx" is
loaded, then it hang.
But under Debian 6 and Ubuntu 12.04.2 it is running fine.
"multipath -ll" works on all 3 systems, even on Debian 7.

Regards Sebastian

-- Output of "multipath -ll":
3600507680180853778000000000000fe dm-0 IBM,2145
size=4.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=25 status=active
| |- 1:0:4:2 sdc 8:32 active ready running
| `- 2:0:4:2 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=5 status=enabled
  |- 2:0:5:2 sde 8:64 active ready running
  `- 1:0:6:2 sdf 8:80 active ready running


-- Output "multipath -v 3":
Apr 26 13:55:43 | loading /lib/multipath/libcheckdirectio.so checker
Apr 26 13:55:43 | loading /lib/multipath/libprioconst.so prioritizer
Apr 26 13:55:43 | dm-1: device node name blacklisted
Apr 26 13:55:43 | dm-2: device node name blacklisted
Apr 26 13:55:43 | sdb: not found in pathvec
Apr 26 13:55:43 | sdb: mask = 0x1f
Apr 26 13:55:43 | sdb: dev_t = 8:16
Apr 26 13:55:43 | sdb: size = 1758174768
Apr 26 13:55:43 | sdb: vendor = IBM-ESXS
Apr 26 13:55:43 | sdb: product = ST9900805SS
Apr 26 13:55:43 | sdb: rev = B55C
Apr 26 13:55:43 | sdb: h:b:t:l = 0:0:1:0
Apr 26 13:55:43 | sdb: path state = running
Apr 26 13:55:43 | sdb: 43905 cyl, 255 heads, 63 sectors/track, start at 0
Apr 26 13:55:43 | sdb: serial = 6XS339ER0000B3049S8Y
Apr 26 13:55:43 | sdb: get_state
Apr 26 13:55:43 | sdb: path checker = directio (internal default)
Apr 26 13:55:43 | sdb: checker timeout = 30000 ms (sysfs setting)
Apr 26 13:55:43 | directio: starting new request
Apr 26 13:55:43 | directio: io finished 4096/0
Apr 26 13:55:43 | sdb: state = up
Apr 26 13:55:43 | sdb: getuid = /lib/udev/scsi_id --whitelisted --replace-whites
pace --device=/dev/%n (internal default)
Apr 26 13:55:43 | sdb: uid = 35000c500553c48f7 (callout)
Apr 26 13:55:43 | sdb: prio = const (internal default)
Apr 26 13:55:43 | sdb: prio =  (internal default)
Apr 26 13:55:43 | sdb: const prio = 1
Apr 26 13:55:43 | sda: not found in pathvec
Apr 26 13:55:43 | sda: mask = 0x1f
Apr 26 13:55:43 | sda: dev_t = 8:0
Apr 26 13:55:43 | sda: size = 1758174768
Apr 26 13:55:43 | sda: vendor = IBM-ESXS
Apr 26 13:55:43 | sda: product = ST9900805SS
Apr 26 13:55:43 | sda: rev = B55C
Apr 26 13:55:43 | sda: h:b:t:l = 0:0:0:0
Apr 26 13:55:43 | sda: path state = running
Apr 26 13:55:43 | sda: 43905 cyl, 255 heads, 63 sectors/track, start at 0
Apr 26 13:55:43 | sda: serial = 6XS30Q1B0000B242E0HW
Apr 26 13:55:43 | sda: get_state
Apr 26 13:55:43 | sda: path checker = directio (internal default)
Apr 26 13:55:43 | sda: checker timeout = 30000 ms (sysfs setting)
Apr 26 13:55:43 | directio: starting new request
Apr 26 13:55:43 | directio: io finished 4096/0
Apr 26 13:55:43 | sda: state = up
Apr 26 13:55:43 | sda: getuid = /lib/udev/scsi_id --whitelisted --replace-whites
pace --device=/dev/%n (internal default)
Apr 26 13:55:43 | sda: uid = 35000c500551c0907 (callout)
Apr 26 13:55:43 | sda: prio = const (internal default)
Apr 26 13:55:43 | sda: prio =  (internal default)
Apr 26 13:55:43 | sda: const prio = 1
Apr 26 13:55:43 | sr1: device node name blacklisted
Apr 26 13:55:43 | sdc: not found in pathvec
Apr 26 13:55:43 | sdc: mask = 0x1f
Apr 26 13:55:43 | sdc: dev_t = 8:32
Apr 26 13:55:43 | sdc: size = 8589934592
Apr 26 13:55:43 | sdc: vendor = IBM
Apr 26 13:55:43 | sdc: product = 2145
Apr 26 13:55:43 | sdc: rev = 0000
Apr 26 13:55:43 | sdc: h:b:t:l = 1:0:4:2
Apr 26 13:55:43 | sdc: tgt_node_name = 0x500507680100a6d6
Apr 26 13:55:43 | sdc: path state = running
Apr 26 13:55:43 | sdc: 65535 cyl, 255 heads, 63 sectors/track, start at 0
Apr 26 13:55:43 | sdc: serial = 020060214ddeXX01
Apr 26 13:55:43 | sdc: get_state
Apr 26 13:55:43 | loading /lib/multipath/libchecktur.so checker
Apr 26 13:55:43 | sdc: path checker = tur (controller setting)
Apr 26 13:55:43 | sdc: checker timeout = 30000 ms (sysfs setting)
Apr 26 13:55:43 | sdc: state = up
Apr 26 13:55:43 | sdc: getuid = /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/%n (controller setting)
Apr 26 13:55:43 | sdc: uid = 3600507680180853778000000000000fe (callout)
Apr 26 13:55:43 | loading /lib/multipath/libprioalua.so prioritizer
Apr 26 13:55:43 | sdc: prio = alua (controller setting)
Apr 26 13:55:43 | sdc: prio args = (null) (controller setting)
Apr 26 13:55:43 | reported target port group is 0
Apr 26 13:55:43 | aas = 00 [active/optimized]
Apr 26 13:55:43 | sdc: alua prio = 50
Apr 26 13:55:43 | sde: not found in pathvec
Apr 26 13:55:43 | sde: mask = 0x1f
Apr 26 13:55:43 | sde: dev_t = 8:64
Apr 26 13:55:43 | sde: size = 8589934592
Apr 26 13:55:43 | sde: vendor = IBM
Apr 26 13:55:43 | sde: product = 2145
Apr 26 13:55:43 | sde: rev = 0000
Apr 26 13:55:43 | sde: h:b:t:l = 2:0:5:2
Apr 26 13:55:43 | sde: tgt_node_name = 0x500507680100a6fe
Apr 26 13:55:43 | sde: path state = running
Apr 26 13:55:43 | sde: 65535 cyl, 255 heads, 63 sectors/track, start at 0
Apr 26 13:55:43 | sde: serial = 020060214ddeXX01
Apr 26 13:55:43 | sde: get_state
Apr 26 13:55:43 | sde: path checker = tur (controller setting)
Apr 26 13:55:43 | sde: checker timeout = 30000 ms (sysfs setting)
Apr 26 13:55:43 | sde: state = up
Apr 26 13:55:43 | sde: getuid = /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/%n (controller setting)
Apr 26 13:55:43 | sde: uid = 3600507680180853778000000000000fe (callout)
Apr 26 13:55:43 | sde: prio = alua (controller setting)
Apr 26 13:55:43 | sde: prio args = (null) (controller setting)
Apr 26 13:55:43 | reported target port group is 1
Apr 26 13:55:43 | aas = 01 [active/non-optimized]
Apr 26 13:55:43 | sde: alua prio = 10
Apr 26 13:55:43 | sdf: not found in pathvec
Apr 26 13:55:43 | sdf: mask = 0x1f
Apr 26 13:55:43 | sdf: dev_t = 8:80
Apr 26 13:55:43 | sdf: size = 8589934592
Apr 26 13:55:43 | sdf: vendor = IBM
Apr 26 13:55:43 | sdf: product = 2145
Apr 26 13:55:43 | sdf: rev = 0000
Apr 26 13:55:43 | sdf: h:b:t:l = 1:0:6:2
Apr 26 13:55:43 | sdf: tgt_node_name = 0x500507680100a6fe
Apr 26 13:55:43 | sdf: path state = running
Apr 26 13:55:43 | sdf: 65535 cyl, 255 heads, 63 sectors/track, start at 0
Apr 26 13:55:43 | sdf: serial = 020060214ddeXX01
Apr 26 13:55:43 | sdf: get_state
Apr 26 13:55:43 | sdf: path checker = tur (controller setting)
Apr 26 13:55:43 | sdf: checker timeout = 30000 ms (sysfs setting)
Apr 26 13:55:43 | sdf: state = up
Apr 26 13:55:43 | sdf: getuid = /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/%n (controller setting)
Apr 26 13:55:43 | sdf: uid = 3600507680180853778000000000000fe (callout)
Apr 26 13:55:43 | sdf: prio = alua (controller setting)
Apr 26 13:55:43 | sdf: prio args = (null) (controller setting)
Apr 26 13:55:43 | reported target port group is 1
Apr 26 13:55:43 | aas = 01 [active/non-optimized]
Apr 26 13:55:43 | sdf: alua prio = 10
Apr 26 13:55:43 | sdd: not found in pathvec
Apr 26 13:55:43 | sdd: mask = 0x1f
Apr 26 13:55:43 | sdd: dev_t = 8:48
Apr 26 13:55:43 | sdd: size = 8589934592
Apr 26 13:55:43 | sdd: vendor = IBM
Apr 26 13:55:43 | sdd: product = 2145
Apr 26 13:55:43 | sdd: rev = 0000
Apr 26 13:55:43 | sdd: h:b:t:l = 2:0:4:2
Apr 26 13:55:43 | sdd: tgt_node_name = 0x500507680100a6d6
Apr 26 13:55:43 | sdd: path state = running
Apr 26 13:55:43 | sdd: 65535 cyl, 255 heads, 63 sectors/track, start at 0
Apr 26 13:55:43 | sdd: serial = 020060214ddeXX01
Apr 26 13:55:43 | sdd: get_state
Apr 26 13:55:43 | sdd: path checker = tur (controller setting)
Apr 26 13:55:43 | sdd: checker timeout = 30000 ms (sysfs setting)
Apr 26 13:55:43 | sdd: state = up
Apr 26 13:55:43 | sdd: getuid = /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/%n (controller setting)
Apr 26 13:55:43 | sdd: uid = 3600507680180853778000000000000fe (callout)
Apr 26 13:55:43 | sdd: prio = alua (controller setting)
Apr 26 13:55:43 | sdd: prio args = (null) (controller setting)
Apr 26 13:55:43 | reported target port group is 0
Apr 26 13:55:43 | aas = 00 [active/optimized]
Apr 26 13:55:43 | sdd: alua prio = 50
Apr 26 13:55:43 | md0: device node name blacklisted
Apr 26 13:55:43 | md1: device node name blacklisted
Apr 26 13:55:43 | md2: device node name blacklisted
Apr 26 13:55:43 | loop0: device node name blacklisted
Apr 26 13:55:43 | loop1: device node name blacklisted
Apr 26 13:55:43 | loop2: device node name blacklisted
Apr 26 13:55:43 | loop3: device node name blacklisted
Apr 26 13:55:43 | loop4: device node name blacklisted
Apr 26 13:55:43 | loop5: device node name blacklisted
Apr 26 13:55:43 | loop6: device node name blacklisted
Apr 26 13:55:43 | loop7: device node name blacklisted
Apr 26 13:55:43 | dm-0: device node name blacklisted
===== paths list =====
uuid                              hcil    dev dev_t pri dm_st chk_st vend/prod
35000c500553c48f7                 0:0:1:0 sdb 8:16  1   undef ready  IBM-ESXS,
35000c500551c0907                 0:0:0:0 sda 8:0   1   undef ready  IBM-ESXS,
3600507680180853778000000000000fe 1:0:4:2 sdc 8:32  50  undef ready  IBM,2145 
3600507680180853778000000000000fe 2:0:5:2 sde 8:64  10  undef ready  IBM,2145 
3600507680180853778000000000000fe 1:0:6:2 sdf 8:80  10  undef ready  IBM,2145 
3600507680180853778000000000000fe 2:0:4:2 sdd 8:48  50  undef ready  IBM,2145 
Apr 26 13:55:43 | params = 1 queue_if_no_path 0 2 1 round-robin 0 2 1 8:32 1 8:48 1 round-robin 0 2 1 8:64 1 8:80 1 
Apr 26 13:55:43 | status = 2 0 0 0 2 1 A 0 2 0 8:32 A 0 8:48 A 0 E 0 2 0 8:64 A 0 8:80 A 0 
Apr 26 13:55:43 | 3600507680180853778000000000000fe: disassemble map [1 queue_if_no_path 0 2 1 round-robin 0 2 1 8:32 1 8:48 1 round-robin 0 2 1 8:64 1 8:80 1 ]
Apr 26 13:55:43 | 3600507680180853778000000000000fe: disassemble status [2 0 0 0 2 1 A 0 2 0 8:32 A 0 8:48 A 0 E 0 2 0 8:64 A 0 8:80 A 0 ]
Apr 26 13:55:43 | sdb: ownership set to 35000c500553c48f7
Apr 26 13:55:43 | sdb: not found in pathvec
Apr 26 13:55:43 | sdb: mask = 0xc
Apr 26 13:55:43 | sdb: path state = running
Apr 26 13:55:43 | sdb: get_state
Apr 26 13:55:43 | directio: starting new request
Apr 26 13:55:43 | directio: io finished 4096/0
Apr 26 13:55:43 | sdb: state = up
Apr 26 13:55:43 | sdb: const prio = 1
Apr 26 13:55:43 | 35000c500553c48f7: features = 0 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: no_path_retry = 0 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: pgfailover = -1 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: pgpolicy = failover (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: selector = round-robin 0 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: features = 0 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: hwhandler = 0 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: rr_weight = 1 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: minio = 1 rq (config file default)
Apr 26 13:55:43 | 35000c500553c48f7: no_path_retry = 0 (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: pg_timeout = NONE (internal default)
Apr 26 13:55:43 | 35000c500553c48f7: remove queue_if_no_path from '0'
Apr 26 13:55:43 | 35000c500553c48f7: assembled map [0 0 1 1 round-robin 0 1 1 8:16 1]
Apr 26 13:55:43 | 35000c500553c48f7: set ACT_CREATE (map does not exist)
Apr 26 13:55:43 | 35000c500553c48f7: domap (0) failure for create/reload map
Apr 26 13:55:43 | directio checker refcount 2
Apr 26 13:55:43 | sda: ownership set to 35000c500551c0907
Apr 26 13:55:43 | sda: not found in pathvec
Apr 26 13:55:43 | sda: mask = 0xc
Apr 26 13:55:43 | sda: path state = running
Apr 26 13:55:43 | sda: get_state
Apr 26 13:55:43 | directio: starting new request
Apr 26 13:55:43 | directio: io finished 4096/0
Apr 26 13:55:43 | sda: state = up
Apr 26 13:55:43 | sda: const prio = 1
Apr 26 13:55:43 | 35000c500551c0907: features = 0 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: no_path_retry = 0 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: pgfailover = -1 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: pgpolicy = failover (internal default)
Apr 26 13:55:43 | 35000c500551c0907: selector = round-robin 0 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: features = 0 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: hwhandler = 0 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: rr_weight = 1 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: minio = 1 rq (config file default)
Apr 26 13:55:43 | 35000c500551c0907: no_path_retry = 0 (internal default)
Apr 26 13:55:43 | 35000c500551c0907: pg_timeout = NONE (internal default)
Apr 26 13:55:43 | 35000c500551c0907: remove queue_if_no_path from '0'
Apr 26 13:55:43 | 35000c500551c0907: assembled map [0 0 1 1 round-robin 0 1 1 8:0 1]
Apr 26 13:55:43 | 35000c500551c0907: set ACT_CREATE (map does not exist)
Apr 26 13:55:43 | 35000c500551c0907: domap (0) failure for create/reload map
Apr 26 13:55:43 | directio checker refcount 1
Apr 26 13:55:43 | tur checker refcount 4
Apr 26 13:55:43 | tur checker refcount 3
Apr 26 13:55:43 | tur checker refcount 2
Apr 26 13:55:43 | tur checker


-- Package-specific info:
/etc/multipath.conf does not exist.


-- System Information:
Debian Release: 7.0
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/8 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-41
ii  kpartx              0.4.9+git0.4dfdaf2b-6
ii  libaio1             0.3.109-3
ii  libc6               2.13-38
ii  libdevmapper1.02.1  2:1.02.74-7
ii  libreadline6        6.2+dfsg-0.1
ii  lsb-base            4.1+Debian8
ii  udev                175-7.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
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]*#/ && $1 ~ /\// && $2 == "/") { print $1; }}' /etc/mtab)
	dm_num=$(dmsetup info -c --noheadings -o minor $root_dev 2>/dev/null)
	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. See DBUG #674733
		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

/etc/init.d/multipath-tools-boot changed:
PATH=/sbin:/bin
DAEMON=/sbin/multipath
NAME=multipath-tools-boot
DESC="Discovering and coalescing multipaths"
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
VERBOSITY=0
if [ -f /etc/default/multipath-tools ] ; then
	. /etc/default/multipath-tools
fi
set -e
case "$1" in
  start)
	log_action_begin_msg "$DESC"
	modprobe dm-multipath 2> /dev/null || true
	log_action_end_msg $?
	;;
  stop)
	;;
  restart|force-reload)
  	$0 start
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac
exit 0


-- no debconf information



More information about the pkg-lvm-maintainers mailing list