]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Supply correct default type for 'dir' based VIR_STORAGE_TYPE_VOLUME
authorPeter Krempa <pkrempa@redhat.com>
Tue, 25 Jun 2019 13:23:56 +0000 (15:23 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 26 Jun 2019 10:28:31 +0000 (12:28 +0200)
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>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c
tests/qemuxml2argvdata/disk-source-pool.args
tests/qemuxml2argvdata/disk-source-pool.xml
tests/qemuxml2xmloutdata/disk-source-pool.xml

index 5b72b7f7bf0a785f3e52eeb1f26ae874d79cefef..d71d9b327347931e797902af342dc85ad8805b25 100644 (file)
@@ -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)
index 65565fe49e9123385213649fe16ec70f6b8c0f58..7c055998225fe6445cdf521b70445a02826ed083 100644 (file)
@@ -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
index 96bcae9a579bded0ac3bc9c3419e12f85e8f4ec2..31b148b4bb470d336f83c949651de5e9926e0aa7 100644 (file)
       <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'/>
index 7e3961381ec29dcd5e5141b8d59afdd72d58d788..78e0449dfdf3478264e112ca40d132df6ba18b8c 100644 (file)
       <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>