Bug#704073: [multipath-tools-boot] error when update-initramfs

Ritesh Raj Sarraf rrs at researchut.com
Tue Apr 2 18:19:54 UTC 2013


On Tuesday 02 April 2013 08:27 PM, matthew pideil wrote:
> Hello,
>
> I tried your packages without results :
>
> LM05q:~/tmp# LANG=C dpkg -i *deb
> (Reading database ... 31699 files and directories currently installed.)
> Preparing to replace kpartx 0.4.9+git0.4dfdaf2b-7 (using
> kpartx_0.4.9+git0.4dfdaf2b-7_amd64.deb) ...
> Unpacking replacement kpartx ...
> Preparing to replace multipath-tools 0.4.9+git0.4dfdaf2b-6 (using
> multipath-tools_0.4.9+git0.4dfdaf2b-7_amd64.deb) ...
> [....] Root is on a multipathed device, multipathd can not be
> stopped:invoke-rc.d: initscript multipath-tools, action "stop" failed.
> dpkg: warning: subprocess old pre-removal script returned error exit
> status 1
> dpkg: trying script from the new package instead ...
> [....] Root is on a multipathed device, multipathd can n

Okay!! It is a tricky situation now. The old, buggy version, has the bug
that you cannot stop the daemon. When the dpkg installer calls it with
the stop target, it exits unclean. And because of this, dpkg aborts the
installation.

I have a sure feeling that it is fixed but I'd like you to confirm.

To work around it, you will have to brute force part of the
installation. Attached with this email is the new initscirpt which has
the fix. You need to take this initscript and overwrite it to the one in
/etc/init.d/
Once you do that, you should not see the installation failure and you
can work further on your tests.


Ritesh


-- 
Ritesh Raj Sarraf
RESEARCHUT - http://www.researchut.com
"Necessity is the mother of invention."

-------------- next part --------------
#! /bin/sh
### BEGIN INIT INFO
# Provides:          multipath-tools
# Required-Start:    udev $local_fs $syslog
# Required-Stop:     udev $local_fs $syslog
# Should-Start:      iscsi
# Should-Stop:       iscsi
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: multipath daemon
# Description:
### END INIT INFO

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"
			DONT_STOP_MPATHD=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"
			DONT_STOP_MPATHD=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)
	DONT_STOP_MPATHD=0
        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

	if [ x$DONT_STOP_MPATHD = x0 ]; then
		log_daemon_msg "Stopping $DESC" "$NAME"
		start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
		log_end_msg $?
	fi
	;;
  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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 897 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-lvm-maintainers/attachments/20130402/d5abe3e5/attachment-0001.pgp>


More information about the pkg-lvm-maintainers mailing list