From a53e37f9d4c9b7b88f13e44f5c82a0ac92dbfd6a Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 17 Apr 2015 10:32:48 +0200 Subject: [PATCH] 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 --- disk-utils/sfdisk.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index f34a45adc..67fa1d18f 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;