As reported here and locally reproduced:
https://forum.proxmox.com/threads/efi-vms-wont-start-under-7-beta-with-writeback-cache.91629/

This configuration is currently broken. Until we figure out how to fix
it properly, we can just have this (luckily very narrow) config pattern
fall back to aio=threads as it used to.

Signed-off-by: Stefan Reiter <s.rei...@proxmox.com>
---

I tried my usual QEMU debugging routine, but couldn't figure anything specific
out - it's not related to EFI, happens on SeaBIOS too, but looking at GDB just
appears that it's waiting for the io_uring fd to become ready (in ppoll)...
I did also test with a newer liburing (2.0 from git) but it didn't help.

Anyway, until I figure it out (which may not happen until the release), let's
work around with this, we can always roll this back later, as it doesn't break
migration/snapshots to change 'aio' type.

The forum post mentioned other SCSI controllers fixing the issue too, but that
just confuses me even more, and we don't have that information available for
cheap here, so I just made it fall back for all of them.

 PVE/QemuServer.pm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 8af4176..f760467 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -1600,8 +1600,11 @@ sub print_drive_commandline_full {
        $cache_direct = 1;
     }
 
+    # io_uring with cache mode writeback or writethrough on krbd will hang...
+    my $rbd_no_io_uring = $scfg && $scfg->{type} eq 'rbd' && $scfg->{krbd} && 
!$cache_direct;
+
     if (!$drive->{aio}) {
-       if ($io_uring) {
+       if ($io_uring && !$rbd_no_io_uring) {
            # io_uring supports all cache modes
            $opts .= ",aio=io_uring";
        } else {
-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to