diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2010-09-22 16:35:52 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2010-09-22 16:35:52 +0100 |
commit | 956fc5a3feacc970ea763697bf28fb686c875408 (patch) | |
tree | 678041965c82e898d8852b45ebd520db85f61962 /daemon | |
parent | f6fda69953ca110104481f1263ec9a96e74dbb88 (diff) | |
download | libguestfs-956fc5a3feacc970ea763697bf28fb686c875408.tar.gz libguestfs-956fc5a3feacc970ea763697bf28fb686c875408.tar.xz libguestfs-956fc5a3feacc970ea763697bf28fb686c875408.zip |
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.
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/sfdisk.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/daemon/sfdisk.c b/daemon/sfdisk.c index 20d7dc82..99a18bb1 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 |