Bug#615958: multipath-tools: The unmount-iscsi.sh-scripts fails on shutdown. In combination with a HP MSA 2012i SAN it doesn't detect the _netdevices properly and will unmount the local (root) partitions as well which causes the machine to hang itself.

Quentin quentin at datavisual.nl
Tue Mar 1 10:08:33 UTC 2011


Package: multipath-tools
Version: 0.4.8+git0.761c66f-9
Severity: important



-- Package-specific info:
Contents of /etc/multipath.conf:
blacklist {
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
}
defaults {
        user_friendly_names yes
}
devices {
        device {
                vendor                 "HP"
                product                "MSA2[02]12fc|MSA2012i"
                getuid_callout         "/lib/udev/scsi_id --page=0x83 --whitelisted --device=/dev/%n"
                hardware_handler       "0"
                path_selector          "round-robin 0"
                path_grouping_policy   multibus
                failback               immediate
                rr_weight              uniform
                no_path_retry          18
                rr_min_io              100
                path_checker           tur
        }
}


-- System Information:
Debian Release: 6.0
  APT prefers squeeze-updates
  APT policy: (500, 'squeeze-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-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-13.1         scripts for initializing and shutt
ii  kpartx              0.4.8+git0.761c66f-9 create device mappings for partiti
ii  libaio1             0.3.107-7            Linux kernel AIO access library - 
ii  libc6               2.11.2-10            Embedded GNU C Library: Shared lib
ii  libdevmapper1.02.1  2:1.02.48-5          The Linux Kernel Device Mapper use
ii  libncurses5         5.7+20100313-5       shared libraries for terminal hand
ii  libreadline6        6.1-3                GNU readline and history libraries
ii  lsb-base            3.2-23.2squeeze1     Linux Standard Base 3.2 init scrip
ii  udev                164-3                /dev/ and hotplug management daemo

multipath-tools recommends no packages.

Versions of packages multipath-tools suggests:
ii  multipath-tools-boo 0.4.8+git0.761c66f-9 Support booting from multipath dev

-- no debconf information


The new working (custom modified) script: umountiscsi.sh 


#! /bin/sh
### BEGIN INIT INFO
# Provides:          umountiscsi.sh
# Required-Start:
# Required-Stop:     $network $remote_fs sendsigs open-iscsi
# Default-Start:
# Default-Stop:      0 1 6
# Short-Description: Unmounts iSCSI filesystems and stops iSCSI services
### END INIT INFO

. /lib/init/vars.sh

. /lib/lsb/init-functions


# Include defaults if available
if [ -f /etc/default/open-iscsi ]; then
	. /etc/default/open-iscsi
fi


do_stop () {
    log_daemon_msg "Unmounting iscsi-backed filesystems"

    umount_fail=0

    if [ $HANDLE_NETDEV -eq 1 ]; then
	    log_progress_msg "Unmounting all devices marked _netdev";
	    umount -a -O _netdev >/dev/null 2>&1
    fi


    # Now handle iSCSI LVM Volumes
    if [ -n "$LVMGROUPS" ]; then
    	log_daemon_msg "Deactivating iSCSI volume groups"
    	for vg in "$LVMGROUPS"; do
    		log_progress_msg $vg
    		vgchange --available=n $vg
		if [ $? -ne 0 ]; then
			log_warning_msg "Cannot deactivate Volume Group $vg"
			umount_fail=1
		fi
    	done
    	log_end_msg 0
    fi

    for HOST_DIR in /sys/devices/platform/host*; do
	if ! [ -d $HOST_DIR/iscsi_host* ]; then
	    continue
	fi
        for SESSION_DIR in $HOST_DIR/session*; do
		#######if ! [ -d $SESSION_DIR/target* ]; then
		if ! [ -d $SESSION_DIR/target*/*\:*/block ]; then
			continue
		fi
		for BLOCK_FILE in $SESSION_DIR/target*/*\:*/block/*; do
			BLOCK_DEV=`echo "$BLOCK_FILE" | sed 's/.*block\///'`
			DOS_PARTITIONS="`awk "/^\/dev\/$BLOCK_DEV/ { print \\$2; }" < /proc/mounts`"
			for DEVICE in $DOS_PARTITIONS; do
				#log_progress_msg $DEVICE
				#echo $DEVICE
				umount $DEVICE
				exit_status=$?
				if ! [ $exit_status -eq 0 ]; then
					umount_fail=1
					log_warning_msg "Could not unmount $DEVICE"
				fi
			done
		done
	done
    done

    if [ $umount_fail -ne 0 ]; then
	    log_end_msg 1
	    exit 1
    else
	    log_end_msg 0
	    exit 0
    fi
}

case "$1" in
    start)
	# No-op
        ;;
    restart|reload|force-reload)
	echo "Error: argument '$1' not supported" >&2
	exit 3
	;;
    stop|"")
        do_stop
	;;
    *)
        echo "Usage: umountiscsi.sh [start|stop]" >&2
	exit 3
	;;
esac





More information about the pkg-lvm-maintainers mailing list