mirror of https://gitee.com/openkylin/libvirt.git
disk: Use virStorageBackendZeroPartitionTable
https://bugzilla.redhat.com/show_bug.cgi?id=1439132 During 'matrix' testing of all possible combinations I found that if device is formated with "gpt" first, then an attempt is made to format using "mac", a startup will fail. Deeper analysis by Peter Krempa indicates that the "mac" table fits into the first block on the disk. Since the GPT disklabel is stored at LBA address 1 it is not overwritten at all. Thus it's apparent that the (blkid) detection tool then prefers GPT over a older disklabel. The GPT disklabel has also a secondary copy at the last LBA of the disk. So, follow the same logic as the logical pool in clearing a 1MB swath at the beginning and end of the device to avoid potential issues with larger sector sizes for the device. Also fixed a minor formatting nit in virStorageBackendDeviceIsEmpty call.
This commit is contained in:
parent
d942bf6e9e
commit
3c4f2e3fb7
|
@ -491,11 +491,15 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||
ok_to_mklabel = true;
|
||||
} else {
|
||||
if (virStorageBackendDeviceIsEmpty(pool->def->source.devices[0].path,
|
||||
fmt, true))
|
||||
fmt, true))
|
||||
ok_to_mklabel = true;
|
||||
}
|
||||
|
||||
if (ok_to_mklabel) {
|
||||
if (virStorageBackendZeroPartitionTable(pool->def->source.devices[0].path,
|
||||
1024 * 1024) < 0)
|
||||
goto error;
|
||||
|
||||
/* eg parted /dev/sda mklabel --script msdos */
|
||||
if (format == VIR_STORAGE_POOL_DISK_UNKNOWN)
|
||||
format = pool->def->source.format = VIR_STORAGE_POOL_DISK_DOS;
|
||||
|
|
Loading…
Reference in New Issue