From: Karel Zak Date: Fri, 17 Apr 2015 08:32:48 +0000 (+0200) Subject: sfdisk: don't use BLKRRPART to check loopdev usage X-Git-Tag: v2.27-rc1~262 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a53e37f9d4c9b7b88f13e44f5c82a0ac92dbfd6a;p=thirdparty%2Futil-linux.git sfdisk: don't use BLKRRPART to check loopdev usage It seesm that kernel always returns EINVAL for BLKRRPART on loop devices, we call the ioctl to check if nobody else uses the device. Signed-off-by: Karel Zak --- diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index f34a45adc6..67fa1d18f3 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -44,6 +44,7 @@ #include "blkdev.h" #include "all-io.h" #include "rpmatch.h" +#include "loopdev.h" #include "libfdisk.h" #include "fdisk-list.h" @@ -1083,7 +1084,8 @@ static int is_device_used(struct sfdisk *sf) if (fd < 0) return 0; - if (fstat(fd, &st) == 0 && S_ISBLK(st.st_mode)) + if (fstat(fd, &st) == 0 && S_ISBLK(st.st_mode) + && major(st.st_rdev) != LOOPDEV_MAJOR) return ioctl(fd, BLKRRPART) != 0; #endif return 0;