[PATCH qemu-server 10/13] blockdev: change aio on target if io_uring is not default.
Alexandre Derumier
alexandre.derumier at groupe-cyllene.com
Tue Jun 3 09:55:55 CEST 2025
This was a limitation of drive-mirror, blockdev mirror is able
to reopen image with a different aio.
Do the change when generating the blockdev_format
Signed-off-by: Alexandre Derumier <alexandre.derumier at groupe-cyllene.com>
---
PVE/QemuServer.pm | 9 ++++++---
PVE/QemuServer/Blockdev.pm | 3 +++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index f68c5bf2..534aa2df 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -8228,8 +8228,6 @@ sub qemu_blockdev_mirror {
my $dst_drive = dclone($drive);
$dst_drive->{file} = $dst_volid;
$dst_drive->{zeroinit} = 1 if $is_zero_initialized;
- #improve: if target storage don't support aio uring,change it to default native
- #and remove clone_disk_check_io_uring()
#add new block device
my $target_drive_blockdev = generate_drive_blockdev($storecfg, $dst_drive);
@@ -8621,7 +8619,12 @@ sub clone_disk {
$dst_format = 'raw';
$size = PVE::QemuServer::Drive::TPMSTATE_DISK_SIZE;
} else {
- clone_disk_check_io_uring($drive, $storecfg, $src_storeid, $storeid, $use_drive_mirror);
+
+ my $machine_type = PVE::QemuServer::Machine::get_current_qemu_machine($vmid);
+ # blockdev can reopen with a different aio
+ if (!PVE::QemuServer::Machine::is_machine_version_at_least($machine_type, 10, 0)) {
+ clone_disk_check_io_uring($drive, $storecfg, $src_storeid, $storeid, $use_drive_mirror);
+ }
$size = PVE::Storage::volume_size_info($storecfg, $drive->{file}, 10);
}
diff --git a/PVE/QemuServer/Blockdev.pm b/PVE/QemuServer/Blockdev.pm
index 01fef66d..60a996f3 100644
--- a/PVE/QemuServer/Blockdev.pm
+++ b/PVE/QemuServer/Blockdev.pm
@@ -68,6 +68,9 @@ sub generate_blockdev_drive_aio {
$aio = "threads";
}
}
+ } elsif ($drive->{aio} eq 'io_uring' && !storage_allows_io_uring_default($scfg, $cache_direct)) {
+ #change aio if io_uring is not supported by storage
+ $aio = $cache_direct ? 'native' : 'threads';
}
return $aio;
}
--
2.39.5
More information about the pve-devel
mailing list