[libvirt] [PATCH] disk: Provide a default storage source format type.

John Ferlan jferlan at redhat.com
Fri Feb 27 00:43:33 UTC 2015


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 at 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




More information about the libvir-list mailing list