From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 5359D74651 for ; Mon, 21 Jun 2021 17:33:38 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4BE111E711 for ; Mon, 21 Jun 2021 17:33:38 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 7EA421E705 for ; Mon, 21 Jun 2021 17:33:37 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 5697840C0A for ; Mon, 21 Jun 2021 17:33:37 +0200 (CEST) From: Stefan Reiter To: pve-devel@lists.proxmox.com Date: Mon, 21 Jun 2021 17:33:18 +0200 Message-Id: <20210621153318.1062336-2-s.reiter@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210621153318.1062336-1-s.reiter@proxmox.com> References: <20210621153318.1062336-1-s.reiter@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.744 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH v2 qemu-server 2/2] cfg2cmd: make io_uring default X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2021 15:33:38 -0000 The 'aio' setting is not visible to the guest, and so can be changed during migrations or snapshots without issue. It is thus only dependendent on the actual QEMU version being >= 6.0, not machine version. Signed-off-by: Stefan Reiter --- new in v2 tested migration from and to old, both worked without issue PVE/QemuServer.pm | 22 +++++++++++++------- test/cfg2cmd/pinned-version-pxe-pve.conf.cmd | 4 ++-- test/cfg2cmd/pinned-version-pxe.conf.cmd | 4 ++-- test/cfg2cmd/pinned-version.conf.cmd | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index fe31741..07dd14a 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -1523,7 +1523,7 @@ sub get_initiator_name { } sub print_drive_commandline_full { - my ($storecfg, $vmid, $drive, $pbs_name) = @_; + my ($storecfg, $vmid, $drive, $pbs_name, $io_uring) = @_; my $path; my $volid = $drive->{file}; @@ -1599,12 +1599,17 @@ sub print_drive_commandline_full { $cache_direct = 1; } - # aio native works only with O_DIRECT if (!$drive->{aio}) { - if($cache_direct) { - $opts .= ",aio=native"; + if ($io_uring) { + # io_uring supports all cache modes + $opts .= ",aio=io_uring"; } else { - $opts .= ",aio=threads"; + # aio native works only with O_DIRECT + if($cache_direct) { + $opts .= ",aio=native"; + } else { + $opts .= ",aio=threads"; + } } } @@ -3667,7 +3672,8 @@ sub config_to_command { push @$devices, '-blockdev', print_pbs_blockdev($pbs_conf, $pbs_name); } - my $drive_cmd = print_drive_commandline_full($storecfg, $vmid, $drive, $pbs_name); + my $drive_cmd = print_drive_commandline_full( + $storecfg, $vmid, $drive, $pbs_name, min_version($kvmver, 6, 0)); # extra protection for templates, but SATA and IDE don't support it.. my $read_only = PVE::QemuConfig->is_template($conf) @@ -4081,7 +4087,9 @@ sub qemu_objectdel { sub qemu_driveadd { my ($storecfg, $vmid, $device) = @_; - my $drive = print_drive_commandline_full($storecfg, $vmid, $device); + my $kvmver = get_running_qemu_version($vmid); + my $io_uring = min_version($kvmver, 6, 0); + my $drive = print_drive_commandline_full($storecfg, $vmid, $device, undef, $io_uring); $drive =~ s/\\/\\\\/g; my $ret = PVE::QemuServer::Monitor::hmp_cmd($vmid, "drive_add auto \"$drive\""); diff --git a/test/cfg2cmd/pinned-version-pxe-pve.conf.cmd b/test/cfg2cmd/pinned-version-pxe-pve.conf.cmd index fd87f80..095b72e 100644 --- a/test/cfg2cmd/pinned-version-pxe-pve.conf.cmd +++ b/test/cfg2cmd/pinned-version-pxe-pve.conf.cmd @@ -23,10 +23,10 @@ -device 'virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000,bus=pci.1,addr=0x1d' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' \ + -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \ -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \ -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.raw,if=none,id=drive-scsi0,discard=on,format=raw,cache=none,aio=native,detect-zeroes=unmap' \ + -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.raw,if=none,id=drive-scsi0,discard=on,format=raw,cache=none,aio=io_uring,detect-zeroes=unmap' \ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A1,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300,romfile=pxe-virtio.rom' \ diff --git a/test/cfg2cmd/pinned-version-pxe.conf.cmd b/test/cfg2cmd/pinned-version-pxe.conf.cmd index 215df3a..5f738f3 100644 --- a/test/cfg2cmd/pinned-version-pxe.conf.cmd +++ b/test/cfg2cmd/pinned-version-pxe.conf.cmd @@ -21,10 +21,10 @@ -device 'VGA,id=vga,bus=pcie.0,addr=0x1' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' \ + -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \ -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \ -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.raw,if=none,id=drive-scsi0,discard=on,format=raw,cache=none,aio=native,detect-zeroes=unmap' \ + -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.raw,if=none,id=drive-scsi0,discard=on,format=raw,cache=none,aio=io_uring,detect-zeroes=unmap' \ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A1,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300,romfile=pxe-virtio.rom' \ diff --git a/test/cfg2cmd/pinned-version.conf.cmd b/test/cfg2cmd/pinned-version.conf.cmd index 6b01dcf..e072491 100644 --- a/test/cfg2cmd/pinned-version.conf.cmd +++ b/test/cfg2cmd/pinned-version.conf.cmd @@ -21,10 +21,10 @@ -device 'VGA,id=vga,bus=pcie.0,addr=0x1' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' \ + -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \ -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \ -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.raw,if=none,id=drive-scsi0,discard=on,format=raw,cache=none,aio=native,detect-zeroes=unmap' \ + -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.raw,if=none,id=drive-scsi0,discard=on,format=raw,cache=none,aio=io_uring,detect-zeroes=unmap' \ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A1,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' \ -- 2.30.2