diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 73868ab4b7..95f0a26564 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -1738,6 +1738,9 @@ qemuBuildDiskDeviceStr(const virDomainDef *def,
if (disk->queues) {
virBufferAsprintf(&opt, ",num-queues=%u", disk->queues);
}
+ if (disk->queue_size > 0) {
+ virBufferAsprintf(&opt, ",queue-size=%u", disk->queue_size);
+ }
qemuBuildVirtioOptionsStr(&opt, disk->virtio);
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 6b685881a8..6b1a0f6c02 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -2826,6 +2826,12 @@ qemuValidateDomainDeviceDefDiskFrontend(const virDomainDiskDef *disk,
"QEMU binary"));
return -1;
}
+ if (disk->queue_size > 0 &&
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("queue-size property isn't supported by this QEMU binary"));
+ return -1;
+ }
break;
case VIR_DOMAIN_DISK_BUS_USB:
diff --git a/tests/qemuxml2argvdata/disk-virtio-queues.x86_64-latest.args b/tests/qemuxml2argvdata/disk-virtio-queues.x86_64-latest.args
index 6637088a35..b1ff6de857 100644
--- a/tests/qemuxml2argvdata/disk-virtio-queues.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/disk-virtio-queues.x86_64-latest.args
@@ -27,9 +27,15 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
-no-acpi \
-boot strict=on \
-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
--blockdev '{"driver":"file","filename":"/tmp/data.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"driver":"file","filename":"/tmp/data.img","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \
+-device virtio-blk-pci,num-queues=4,bus=pci.0,addr=0x3,drive=libvirt-3-format,id=virtio-disk0,bootindex=1 \
+-blockdev '{"driver":"file","filename":"/tmp/data1.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \
+-device virtio-blk-pci,queue-size=256,bus=pci.0,addr=0x4,drive=libvirt-2-format,id=virtio-disk1 \
+-blockdev '{"driver":"file","filename":"/tmp/data2.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
--device virtio-blk-pci,num-queues=4,bus=pci.0,addr=0x3,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
+-device virtio-blk-pci,num-queues=4,queue-size=256,bus=pci.0,addr=0x5,drive=libvirt-1-format,id=virtio-disk2 \
-audiodev id=audio1,driver=none \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-virtio-queues.xml b/tests/qemuxml2argvdata/disk-virtio-queues.xml
index ea1001bdd4..3cfa958c97 100644
--- a/tests/qemuxml2argvdata/disk-virtio-queues.xml
+++ b/tests/qemuxml2argvdata/disk-virtio-queues.xml
@@ -23,6 +23,18 @@