2 high level notes (but not blocker): * would it maybe make sense to pull the 'get_current_qemu_machine' out so other parts of the api/code can reuse that? i guess we'll maybe have more of such checks in the future, and having the version already available at e.g. the top level of the api call could make sense. This can ofc also be done when we actually need it
* afaics the checks in QemuMigrate and the api are identical, would it make sense to factor them out, so they don't accidentally diverge? (Are there maybe even more places where we check this?) Aside from these (minor) changes consider this: Reviewed-by: Dominik Csapak <[email protected]> On 1/8/26 11:11 AM, Markus Frank wrote:
The live-migration feature now works with QEMU 10.1: 5d56bff11e ("ui/vdagent: add migration support") Signed-off-by: Markus Frank <[email protected]> --- v2: * add machine version check to ensure QEMU version is at least 10.1. src/PVE/API2/Qemu.pm | 4 +++- src/PVE/QemuMigrate.pm | 6 +++++- src/PVE/QemuServer.pm | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/PVE/API2/Qemu.pm b/src/PVE/API2/Qemu.pm index 190878de..3ab0afcf 100644 --- a/src/PVE/API2/Qemu.pm +++ b/src/PVE/API2/Qemu.pm @@ -5300,7 +5300,9 @@ __PACKAGE__->register_method({my $vga = PVE::QemuServer::parse_vga($vmconf->{vga});if ($res->{running} && $vga->{'clipboard'} && $vga->{'clipboard'} eq 'vnc') { - push $local_resources->@*, "clipboard=vnc"; + my $machine_version = PVE::QemuServer::Machine::get_current_qemu_machine($vmid); + push $local_resources->@*, "clipboard=vnc" + if !PVE::QemuServer::Machine::is_machine_version_at_least($machine_version, 10, 1); }$res->{allowed_nodes} = [];diff --git a/src/PVE/QemuMigrate.pm b/src/PVE/QemuMigrate.pm index b3ddc34e..829288ff 100644 --- a/src/PVE/QemuMigrate.pm +++ b/src/PVE/QemuMigrate.pm @@ -301,7 +301,11 @@ sub prepare {my $vga = PVE::QemuServer::parse_vga($conf->{vga});if ($running && $vga->{'clipboard'} && $vga->{'clipboard'} eq 'vnc') { - die "VMs with 'clipboard' set to 'vnc' are not live migratable!\n"; + my $machine_version = PVE::QemuServer::Machine::get_current_qemu_machine($vmid); + if (!PVE::QemuServer::Machine::is_machine_version_at_least($machine_version, 10, 1)) { + die "VMs with 'clipboard' set to 'vnc' are not live migratable with" + . " QEMU/machine versions older than 10.1!\n"; + } }my $vollist = PVE::QemuServer::get_vm_volumes($conf);diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm index 69991843..ecf64fea 100644 --- a/src/PVE/QemuServer.pm +++ b/src/PVE/QemuServer.pm @@ -177,8 +177,8 @@ my $vga_fmt = { }, clipboard => { description => - 'Enable a specific clipboard. If not set, depending on the display type the' - . ' SPICE one will be added. Migration with VNC clipboard is not yet supported!', + 'Enable a specific clipboard. If not set, depending on the display type the SPICE one' + . ' will be added. Live migration is not possible with QEMU version < 10.1.', type => 'string', enum => ['vnc'], optional => 1,
_______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
