[PATCH v2 4/4] qemu: Supply correct default type for 'dir' based VIR_STORAGE_TYPE_VOLUME

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Our code would skip adding the default type in this cases, but since we
know that the only reasonable option here is 'fat' we can add it while
starting the VM.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/qemu/qemu_domain.c                        | 12 +++++++++---
 tests/qemuxml2argvdata/disk-source-pool.args  |  4 ++++
 tests/qemuxml2argvdata/disk-source-pool.xml   |  6 ++++++
 tests/qemuxml2xmloutdata/disk-source-pool.xml |  7 +++++++
 4 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 5b72b7f7bf..d71d9b3273 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -14217,10 +14217,16 @@ qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk,
 {
     qemuDomainPrepareDiskCachemode(disk);

-    /* add raw file format if the storage pool did not fill it in */
+    /* set default format for storage pool based disks */
     if (disk->src->type == VIR_STORAGE_TYPE_VOLUME &&
-        disk->src->format <= VIR_STORAGE_FILE_NONE)
-        disk->src->format = VIR_STORAGE_FILE_RAW;
+        disk->src->format <= VIR_STORAGE_FILE_NONE) {
+        int actualType = virStorageSourceGetActualType(disk->src);
+
+        if (actualType == VIR_STORAGE_TYPE_DIR)
+            disk->src->format = VIR_STORAGE_FILE_FAT;
+        else
+            disk->src->format = VIR_STORAGE_FILE_RAW;
+    }

     if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) {
         if (qemuDomainPrepareDiskSourceBlockdev(disk, priv, cfg) < 0)
diff --git a/tests/qemuxml2argvdata/disk-source-pool.args b/tests/qemuxml2argvdata/disk-source-pool.args
index 65565fe49e..7c05599822 100644
--- a/tests/qemuxml2argvdata/disk-source-pool.args
+++ b/tests/qemuxml2argvdata/disk-source-pool.args
@@ -36,4 +36,8 @@ readonly=on \
 readonly=on \
 -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,\
 id=virtio-disk0 \
+-drive file=fat:/some/dir/device/vol2,if=none,id=drive-virtio-disk1,\
+readonly=on \
+-device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,\
+id=virtio-disk1 \
 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/disk-source-pool.xml b/tests/qemuxml2argvdata/disk-source-pool.xml
index 96bcae9a57..31b148b4bb 100644
--- a/tests/qemuxml2argvdata/disk-source-pool.xml
+++ b/tests/qemuxml2argvdata/disk-source-pool.xml
@@ -43,6 +43,12 @@
       <target dev='vda' bus='virtio'/>
       <readonly/>
     </disk>
+    <disk type='volume' device='disk'>
+      <driver name='qemu'/>
+      <source pool='pool-disk' volume='dir+vol2'/>
+      <target dev='vdb' bus='virtio'/>
+      <readonly/>
+    </disk>
     <controller type='usb' index='0'/>
     <controller type='ide' index='0'/>
     <controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuxml2xmloutdata/disk-source-pool.xml b/tests/qemuxml2xmloutdata/disk-source-pool.xml
index 7e3961381e..78e0449dfd 100644
--- a/tests/qemuxml2xmloutdata/disk-source-pool.xml
+++ b/tests/qemuxml2xmloutdata/disk-source-pool.xml
@@ -44,6 +44,13 @@
       <readonly/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
     </disk>
+    <disk type='volume' device='disk'>
+      <driver name='qemu'/>
+      <source pool='pool-disk' volume='dir+vol2'/>
+      <target dev='vdb' bus='virtio'/>
+      <readonly/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
+    </disk>
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-- 
2.21.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux