mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
storage: Fix virStorageBackendDiskDeleteVol for device mapper
Commit id 'df1011ca8' modified virStorageBackendDiskDeleteVol to use "dmsetup remove --force" to remove the volume, but left things in an inconsistent state since the partition still existed on the disk and only the device mapper device (/dev/dm-#) was removed. Prior to commit '1895b421' (or '1ffd82bb' and '471e1c4e'), this could go unnoticed since virStorageBackendDiskRefreshPool wasn't called. However, the pool would be unusable since the /dev/dm-# device would be removed even though the partition was not removed unless a multipathd restart reset the link. That would of course make the volume appear again in the pool after a refresh or pool start after libvirt reload. This patch removes the 'dmsetup' logic and re-implements the partition deletion logic for device mapper devices. The removal of the partition via 'parted rm --script #' will cause udev device change logic to allow multipathd to handle removing the dm-* device associated with the partition.
This commit is contained in:
15
configure.ac
15
configure.ac
@@ -1958,19 +1958,12 @@ LIBPARTED_LIBS=
|
||||
if test "$with_storage_disk" = "yes" ||
|
||||
test "$with_storage_disk" = "check"; then
|
||||
AC_PATH_PROG([PARTED], [parted], [], [$PATH:/sbin:/usr/sbin])
|
||||
AC_PATH_PROG([DMSETUP], [dmsetup], [], [$PATH:/sbin:/usr/sbin])
|
||||
if test -z "$PARTED" ; then
|
||||
PARTED_FOUND=no
|
||||
else
|
||||
PARTED_FOUND=yes
|
||||
fi
|
||||
|
||||
if test -z "$DMSETUP" ; then
|
||||
DMSETUP_FOUND=no
|
||||
else
|
||||
DMSETUP_FOUND=yes
|
||||
fi
|
||||
|
||||
if test "$PARTED_FOUND" = "yes" && test "x$PKG_CONFIG" != "x" ; then
|
||||
PKG_CHECK_MODULES([LIBPARTED], [libparted >= $PARTED_REQUIRED], [],
|
||||
[PARTED_FOUND=no])
|
||||
@@ -1989,12 +1982,12 @@ if test "$with_storage_disk" = "yes" ||
|
||||
fi
|
||||
|
||||
if test "$with_storage_disk" = "yes" &&
|
||||
test "$PARTED_FOUND:$DMSETUP_FOUND" != "yes:yes"; then
|
||||
AC_MSG_ERROR([Need both parted and dmsetup for disk storage driver])
|
||||
test "$PARTED_FOUND" != "yes"; then
|
||||
AC_MSG_ERROR([Need parted for disk storage driver])
|
||||
fi
|
||||
|
||||
if test "$with_storage_disk" = "check"; then
|
||||
if test "$PARTED_FOUND:$DMSETUP_FOUND" != "yes:yes"; then
|
||||
if test "$PARTED_FOUND" != "yes"; then
|
||||
with_storage_disk=no
|
||||
else
|
||||
with_storage_disk=yes
|
||||
@@ -2006,8 +1999,6 @@ if test "$with_storage_disk" = "yes" ||
|
||||
[whether Disk backend for storage driver is enabled])
|
||||
AC_DEFINE_UNQUOTED([PARTED],["$PARTED"],
|
||||
[Location or name of the parted program])
|
||||
AC_DEFINE_UNQUOTED([DMSETUP],["$DMSETUP"],
|
||||
[Location or name of the dmsetup program])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_STORAGE_DISK], [test "$with_storage_disk" = "yes"])
|
||||
|
||||
Reference in New Issue
Block a user