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

Peter Krempa posted 4 patches 6 years, 7 months ago
[libvirt] [PATCH v2 4/4] qemu: Supply correct default type for 'dir' based VIR_STORAGE_TYPE_VOLUME
Posted by Peter Krempa 6 years, 7 months ago
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@redhat.com>
---
 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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2 4/4] qemu: Supply correct default type for 'dir' based VIR_STORAGE_TYPE_VOLUME
Posted by Ján Tomko 6 years, 7 months ago
On Tue, Jun 25, 2019 at 04:30:33PM +0200, Peter Krempa wrote:
>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@redhat.com>
>---
> 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(-)
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

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