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