From: Richard W.M. Jones Date: Wed, 22 Sep 2010 15:35:52 +0000 (+0100) Subject: Call blockdev --rereadpt after sfdisk commands. X-Git-Tag: 1.5.19~2 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=956fc5a3feacc970ea763697bf28fb686c875408;hp=f6fda69953ca110104481f1263ec9a96e74dbb88 Call blockdev --rereadpt after sfdisk commands. On fast machines sfdisk has some sort of race where it fails to re-read the partition table it has just created (it's not clear if this is a race in sfdisk, the kernel or some other component). This commit works around the problem by calling blockdev --rereadpt after sfdisk operations, which experience shows is enough to stop the problem from happening. --- diff --git a/daemon/sfdisk.c b/daemon/sfdisk.c index 20d7dc8..99a18bb 100644 --- a/daemon/sfdisk.c +++ b/daemon/sfdisk.c @@ -91,7 +91,19 @@ sfdisk (const char *device, int n, int cyls, int heads, int sectors, udev_settle (); - return 0; + /* sfdisk sometimes fails on fast machines with: + * + * Re-reading the partition table ... + * BLKRRPART: Device or resource busy + * The command to re-read the partition table failed. + * Run partprobe(8), kpartx(8) or reboot your system now, + * before using mkfs + * + * Unclear if this is a bug in sfdisk or the kernel or some + * other component. In any case, reread the partition table + * unconditionally here. + */ + return do_blockdev_rereadpt (device); } int