X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=1a3cda5f981bb75e3f9d080ce664975b3dd01872;hp=96f4a45dd3b930ce394812bc0b22a446603f3b16;hb=c570da404b5e378c1ccd85c44f0a2117c8ce76d5;hpb=fc0a6d8c09bd56cdd17ef2586c45a919356fbd88 diff --git a/grml-debootstrap b/grml-debootstrap index 96f4a45..1a3cda5 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -298,7 +298,13 @@ cleanup() { if [ -n "${ORIG_TARGET}" ] ; then einfo "Removing loopback mount of file ${ORIG_TARGET}." - kpartx -d "${ORIG_TARGET}" ; eend $? + kpartx -d "${ORIG_TARGET}" + # Workaround for a bug in kpartx which doesn't clean up properly, + # see Debian Bug #891077 and Github-PR grml/grml-debootstrap#112 + if dmsetup ls | grep -q "^${LOOP_PART} "; then + kpartx -d "/dev/${LOOP_DISK}" >/dev/null + fi + eend $? fi } @@ -1387,7 +1393,7 @@ prepare_vm() { bailout 1 fi - # make sure loop module is present and an usable loop device exists + # make sure loop module is present and a usable loop device exists modprobe -q loop if ! losetup -f >/dev/null 2>&1; then eerror "Error finding usable loop device" ; eend 1 @@ -1398,7 +1404,7 @@ prepare_vm() { # "Is device-mapper driver missing from kernel? [...]" modprobe -q dm-mod if ! grep -q 'device-mapper' /proc/misc >/dev/null 2>&1 ; then - einfo "Device-mapper support missing in kernel." + eerror "Device-mapper support missing in kernel." ; eend 1 bailout 1 fi @@ -1428,6 +1434,7 @@ prepare_vm() { # hopefully this always works as expected LOOP_PART="${DEVINFO##add map }" # 'loop0p1 (254:5): 0 20477 linear 7:0 3' LOOP_PART="${LOOP_PART// */}" # 'loop0p1' + LOOP_DISK="${LOOP_PART%p*}" # 'loop0' export TARGET="/dev/mapper/$LOOP_PART" # '/dev/mapper/loop1p1' if [ -z "$TARGET" ] ; then @@ -1512,6 +1519,11 @@ fi try_umount 3 "${MNTPOINT}"/dev umount "${MNTPOINT}" kpartx -d "${ORIG_TARGET}" >/dev/null + # Workaround for a bug in kpartx which doesn't clean up properly, + # see Debian Bug #891077 and Github-PR grml/grml-debootstrap#112 + if dmsetup ls | grep -q "^${LOOP_PART} "; then + kpartx -d "/dev/${LOOP_DISK}" >/dev/null + fi } # }}}