From 956fc5a3feacc970ea763697bf28fb686c875408 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 22 Sep 2010 16:35:52 +0100 Subject: [PATCH] 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. --- daemon/sfdisk.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 -- 1.8.3.1