diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c
index f9fbfc98f2a859fc7722dbe6e52046fad38e2614..80018075526891c3cf1d913475b2e0f2915620bd 100644
--- a/tests/qemublocktest.c
+++ b/tests/qemublocktest.c
@@ -1199,6 +1199,7 @@ mymain(void)
TEST_DISK_TO_JSON("dir-fat-floppy");
TEST_DISK_TO_JSON("file-raw-aio_native");
TEST_DISK_TO_JSON("file-backing_basic-aio_threads");
+ TEST_DISK_TO_JSON("file-backing_basic-aio_io_uring");
TEST_DISK_TO_JSON("file-raw-luks");
TEST_DISK_TO_JSON("file-qcow2-backing-chain-noopts");
TEST_DISK_TO_JSON("file-qcow2-backing-chain-unterminated");
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring-srconly.json
new file mode 100644
index 0000000000000000000000000000000000000000..65a3773b972426aed745931756c20552ea679c6e
--- /dev/null
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring-srconly.json
@@ -0,0 +1,44 @@
+(
+ source only properties:
+ {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a"
+ }
+ backing store string:
+ /var/lib/libvirt/images/a
+)
+(
+ source only properties:
+ {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b"
+ }
+ backing store string:
+ /var/lib/libvirt/images/b
+)
+(
+ source only properties:
+ {
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ]
+ }
+ backing store string:
+ gluster://test.org:24007/images/c
+)
+(
+ source only properties:
+ {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d"
+ }
+ backing store string:
+ /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring.json b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring.json
new file mode 100644
index 0000000000000000000000000000000000000000..f510c43edbcacbb1efc12492305ecef6350204c3
--- /dev/null
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring.json
@@ -0,0 +1,66 @@
+{
+ "node-name": "node-a-f",
+ "read-only": false,
+ "driver": "qcow",
+ "file": "node-a-s",
+ "backing": "node-b-f"
+}
+{
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a",
+ "aio": "io_uring",
+ "node-name": "node-a-s",
+ "auto-read-only": true,
+ "discard": "unmap"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "driver": "qed",
+ "file": "node-b-s",
+ "backing": "node-c-f"
+}
+{
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b",
+ "aio": "io_uring",
+ "node-name": "node-b-s",
+ "auto-read-only": true,
+ "discard": "unmap"
+}
+{
+ "node-name": "node-c-f",
+ "read-only": true,
+ "driver": "vmdk",
+ "file": "node-c-s",
+ "backing": "node-d-f"
+}
+{
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ],
+ "node-name": "node-c-s",
+ "auto-read-only": true,
+ "discard": "unmap"
+}
+{
+ "node-name": "node-d-f",
+ "read-only": true,
+ "driver": "raw",
+ "file": "node-d-s"
+}
+{
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d",
+ "aio": "io_uring",
+ "node-name": "node-d-s",
+ "auto-read-only": true,
+ "discard": "unmap"
+}
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring.xml b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring.xml
new file mode 100644
index 0000000000000000000000000000000000000000..610c091f3e45e8dd4536124e08d063a0fc3ecaa6
--- /dev/null
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_io_uring.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2argvdata/disk-aio-io_uring.x86_64-latest.args b/tests/qemuxml2argvdata/disk-aio-io_uring.x86_64-latest.args
new file mode 100644
index 0000000000000000000000000000000000000000..0bcf8f5affaa0d3a8043d1484b6334e49b0f9e7f
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-aio-io_uring.x86_64-latest.args
@@ -0,0 +1,41 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/tmp/lib/domain--1-QEMUGuest1 \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \
+XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \
+XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-x86_64 \
+-name guest=QEMUGuest1,debug-threads=on \
+-S \
+-object secret,id=masterKey0,format=raw,\
+file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
+-machine pc,accel=tcg,usb=off,dump-guest-core=off \
+-cpu qemu64 \
+-m 214 \
+-overcommit mem-lock=off \
+-smp 1,sockets=1,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server,nowait \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-no-acpi \
+-boot strict=on \
+-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
+-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1",\
+"aio":"io_uring","node-name":"libvirt-1-storage","auto-read-only":true,\
+"discard":"unmap"}' \
+-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2",\
+"file":"libvirt-1-storage"}' \
+-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x9,drive=libvirt-1-format,\
+id=virtio-disk0,bootindex=1 \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\
+resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-aio-io_uring.xml b/tests/qemuxml2argvdata/disk-aio-io_uring.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e6ea6225d54d220c0da612b8648631be69d0679
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-aio-io_uring.xml
@@ -0,0 +1,30 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 1
+
+ hvm
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu-system-x86_64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 66472a5ee51bcac764b33a30fcea6c94292c2747..1a1b9026c4c2835306688ab65b02959c273a5207 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1127,6 +1127,7 @@ mymain(void)
DO_TEST("disk-aio", NONE);
DO_TEST_CAPS_VER("disk-aio", "2.12.0");
DO_TEST_CAPS_LATEST("disk-aio");
+ DO_TEST_CAPS_LATEST("disk-aio-io_uring");
DO_TEST("disk-source-pool", NONE);
DO_TEST("disk-source-pool-mode", NONE);
DO_TEST("disk-ioeventfd",
diff --git a/tests/qemuxml2xmloutdata/disk-aio-io_uring.x86_64-latest.xml b/tests/qemuxml2xmloutdata/disk-aio-io_uring.x86_64-latest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5b691e1c35faa62e981fdacd47a3a6c75f6cc6e3
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/disk-aio-io_uring.x86_64-latest.xml
@@ -0,0 +1,39 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 1
+
+ hvm
+
+
+
+ qemu64
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu-system-x86_64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index cf5abeac359b35dc7e9acdaa9b4c7558fbf2b03d..4e43fa6fc67a7b495a867f97e3255da4bbe8e514 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -312,6 +312,7 @@ mymain(void)
DO_TEST("migrate", NONE);
DO_TEST("qemu-ns-no-env", NONE);
DO_TEST("disk-aio", NONE);
+ DO_TEST_CAPS_LATEST("disk-aio-io_uring");
DO_TEST("disk-cdrom", NONE);
DO_TEST_CAPS_LATEST("disk-cdrom-empty-network-invalid");
DO_TEST("disk-cdrom-bus-other", NONE);