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 <kzak@redhat.com>
This commit is contained in:
Karel Zak 2015-04-17 10:32:48 +02:00
parent 2daf61b734
commit a53e37f9d4
1 changed files with 3 additions and 1 deletions

View File

@ -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;