https://bugzilla.redhat.com/show_bug.cgi?id=1181062
According to the formatstorage.html description for <source> element
and "format" attribute: "All drivers are required to have a default
value for this, so it is optional."
As it turns out the disk backend did not choose a default value, so I
added a default of "msdos" if the source type is "unknown" as well as
updating the storage.html backend disk volume driver documentation to
indicate the default format is dos.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
docs/storage.html.in | 1 +
src/storage/storage_backend_disk.c | 13 ++++++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/docs/storage.html.in b/docs/storage.html.in
index f920dae..b9b503d 100644
--- a/docs/storage.html.in
+++ b/docs/storage.html.in
@@ -346,6 +346,7 @@
on the size and placement of volumes. The 'free extents'
information will detail the regions which are available for creating
new volumes. A volume cannot span across 2 different free extents.
+ It will default to using <code>msdos</code> as the pool source format.
</p>
<h3>Example pool input</h3>
diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c
index 39082cc..9a79325 100644
--- a/src/storage/storage_backend_disk.c
+++ b/src/storage/storage_backend_disk.c
@@ -468,13 +468,20 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
}
if (ok_to_mklabel) {
- /* eg parted /dev/sda mklabel msdos */
+ /* eg parted /dev/sda mklabel --script msdos */
+ int format = pool->def->source.format;
+ const char *fmt;
+ if (format == VIR_STORAGE_POOL_DISK_UNKNOWN ||
+ format == VIR_STORAGE_POOL_DISK_DOS)
+ fmt = "msdos";
+ else
+ fmt = virStoragePoolFormatDiskTypeToString(format);
+
cmd = virCommandNewArgList(PARTED,
pool->def->source.devices[0].path,
"mklabel",
"--script",
- ((pool->def->source.format ==
VIR_STORAGE_POOL_DISK_DOS) ? "msdos" :
-
virStoragePoolFormatDiskTypeToString(pool->def->source.format)),
+ fmt,
NULL);
ret = virCommandRun(cmd, NULL);
}
--
2.1.0