FYI, we still do not plan to support io_uring in RHEL 9.0. The goal is to enable support in an update release.
Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring doesn't work. Steps: 1. Start a domain with the disk for io_uring ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk <disk type="file" device="disk"> <driver name="qemu" type="qcow2" cache="none" io="io_uring" copy_on_read="on" ats="on" packed="on"/> <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> <target dev="vda" bus="virtio"/> <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> </disk> ➜ ~ virsh start rhel-9.2 --console error: Failed to start domain 'rhel-9.2' error: internal error: process exited while connecting to monitor: 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio":"io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: failed to init linux io_uring ring: Function not implemented It seems the issue is from kernel. See also https://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79
(In reply to Han Han from comment #19) > Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 > liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring > doesn't work. > Steps: > 1. Start a domain with the disk for io_uring > ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk > <disk type="file" device="disk"> > <driver name="qemu" type="qcow2" cache="none" io="io_uring" > copy_on_read="on" ats="on" packed="on"/> > <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> > <target dev="vda" bus="virtio"/> > <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> > </disk> > > > ➜ ~ virsh start rhel-9.2 --console > error: Failed to start domain 'rhel-9.2' > error: internal error: process exited while connecting to monitor: > 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev > {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio": > "io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush": > false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: > failed to init linux io_uring ring: Function not implemented > > It seems the issue is from kernel. > See also Red Hathttps://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79 This feature need kernel support ,please see https://bugzilla.redhat.com/show_bug.cgi?id=1947230#c16
(In reply to qing.wang from comment #20) > (In reply to Han Han from comment #19) > > Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 > > liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring > > doesn't work. > > Steps: > > 1. Start a domain with the disk for io_uring > > ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk > > <disk type="file" device="disk"> > > <driver name="qemu" type="qcow2" cache="none" io="io_uring" > > copy_on_read="on" ats="on" packed="on"/> > > <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> > > <target dev="vda" bus="virtio"/> > > <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> > > </disk> > > > > > > ➜ ~ virsh start rhel-9.2 --console > > error: Failed to start domain 'rhel-9.2' > > error: internal error: process exited while connecting to monitor: > > 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev > > {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio": > > "io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush": > > false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: > > failed to init linux io_uring ring: Function not implemented > > > > It seems the issue is from kernel. > > See also Red Hathttps://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79 > > This feature need kernel support ,please see > https://bugzilla.redhat.com/show_bug.cgi?id=1947230#c16 It should have been fixed in kernel. The kernel fixed version is kernel-5.14.0-315.el9, while my test version is kernel-5.14.0-316.el9.x86_64
In RHEL 9.3, io_uring still needs to be explicitly enabled in the kernel command line. See Stefan's comment in the merge request: > Note that the "io_uring.enable=y" host kernel parameter is required because Linux io_uring will be disabled by default in CentOS Stream. Did you set this kernel parameter when booting the host?
(In reply to Han Han from comment #21) > (In reply to qing.wang from comment #20) > > (In reply to Han Han from comment #19) > > > Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 > > > liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring > > > doesn't work. > > > Steps: > > > 1. Start a domain with the disk for io_uring > > > ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk > > > <disk type="file" device="disk"> > > > <driver name="qemu" type="qcow2" cache="none" io="io_uring" > > > copy_on_read="on" ats="on" packed="on"/> > > > <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> > > > <target dev="vda" bus="virtio"/> > > > <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> > > > </disk> > > > > > > > > > ➜ ~ virsh start rhel-9.2 --console > > > error: Failed to start domain 'rhel-9.2' > > > error: internal error: process exited while connecting to monitor: > > > 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev > > > {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio": > > > "io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush": > > > false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: > > > failed to init linux io_uring ring: Function not implemented > > > > > > It seems the issue is from kernel. > > > See also Red Hathttps://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79 > > > > This feature need kernel support ,please see > > https://bugzilla.redhat.com/show_bug.cgi?id=1947230#c16 > > It should have been fixed in kernel. The kernel fixed version is > kernel-5.14.0-315.el9, while my test version is kernel-5.14.0-316.el9.x86_64 It works after adding io_uring.enable=y in the kernel command line. Red Hat Enterprise Linux release 9.3 Beta (Plow) 5.14.0-316.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 seabios-bin-1.16.1-1.el9.noarch edk2-ovmf-20230301gitf80f052277c8-4.el9.noarch libvirt-9.3.0-2.el9.x86_64 virtio-win-prewhql-0.1-236.iso
QE bot(pre verify): Set 'Verified:Tested,SanityOnly' as gating/tier1 test pass.
Psss regression test with Red Hat Enterprise Linux release 9.3 Beta (Plow) 5.14.0-316.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 seabios-bin-1.16.1-1.el9.noarch edk2-ovmf-20230301gitf80f052277c8-4.el9.noarch libvirt-9.3.0-2.el9.x86_64 virtio-win-prewhql-0.1-237.iso python ConfigTest.py --category=virtual_block_device --iothread_scheme=roundrobin --nr_iothreads=2 --platform=x86_64 --guestname=RHEL.9.2.0 --driveformat=virtio_scsi --nicmodel=virtio_net --imageformat=qcow2 --machines=i440fx --customsparams="vm_mem_limit = 12G\nimage_aio=io_uring" --firmware=default_bios --netdst=virbr0