From: Dominik Csapak <d.csapak@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH qemu-server 4/4] api: enable live migration for marked mapped pci devices
Date: Mon, 18 Mar 2024 12:18:33 +0100 [thread overview]
Message-ID: <20240318111836.1947580-7-d.csapak@proxmox.com> (raw)
In-Reply-To: <20240318111836.1947580-1-d.csapak@proxmox.com>
They have to be marked as 'live-migration-capable' in the mapping
config, and the driver and qemu must support it.
For the gui checks, we now return a list of 'mapped-with-live-migration'
entries in the migration preflight api call too.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
PVE/API2/Qemu.pm | 5 +++++
PVE/QemuMigrate.pm | 12 ++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 4ecaeb91..8581a529 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -4453,6 +4453,10 @@ __PACKAGE__->register_method({
type => 'array',
description => "List of mapped resources e.g. pci, usb"
},
+ 'mapped-with-live-migration' => {
+ type => 'array',
+ description => "List of mapped resources that are marked as capable of live-migration",
+ },
},
},
code => sub {
@@ -4517,6 +4521,7 @@ __PACKAGE__->register_method({
$res->{local_resources} = $local_resources;
$res->{'mapped-resources'} = [ map { "$_->{key}" } $mapped_resources->@* ];
+ $res->{'mapped-with-live-migration'} = [ map { $_->{'live-migration'} ? "$_->{key}" : () } $mapped_resources->@* ];
return $res;
diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index 6fe8157d..b3570770 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -246,11 +246,15 @@ sub prepare {
if (scalar($mapped_res->@*)) {
my $missing_mappings = $missing_mappings_by_node->{$self->{node}};
- my $mapped_text = join(", ", map { $_->{key} } $mapped_res->@*);
- if ($running) {
- die "can't migrate running VM which uses mapped devices: " . $mapped_text . "\n";
- } elsif (scalar($missing_mappings->@*)) {
+ my $missing_live_mappings = [];
+ for my $res ($mapped_res->@*) {
+ my $name = "$res->{key}:$res->{device}";
+ push $missing_live_mappings->@*, $name if !$res->{'live-migration'};
+ }
+ if (scalar($missing_mappings->@*)) {
die "can't migrate to '$self->{node}': missing mapped devices " . join(", ", $missing_mappings->@*) . "\n";
+ } elsif ($running && scalar($missing_live_mappings->@*)) {
+ die "can't live migrate running VM which uses following mapped devices: " . join(", ", $missing_live_mappings->@*) . "\n";
} else {
$self->log('info', "migrating VM which uses mapped local devices");
}
--
2.39.2
next prev parent reply other threads:[~2024-03-18 11:18 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-18 11:18 [pve-devel] [PATCH guest-common/qemu-server/manager/docs] enable experimental support for pci live migration Dominik Csapak
2024-03-18 11:18 ` [pve-devel] [PATCH guest-common 1/2] mapping: pci: add 'live-migration-capable' flag to mappings Dominik Csapak
2024-03-22 13:37 ` Fiona Ebner
2024-04-02 9:30 ` Dominik Csapak
2024-04-10 10:09 ` Fiona Ebner
2024-03-18 11:18 ` [pve-devel] [PATCH guest-common 2/2] mapping: pci: optionally return the config in 'find_on_current_node' Dominik Csapak
2024-03-22 13:38 ` Fiona Ebner
2024-04-02 9:32 ` Dominik Csapak
2024-03-18 11:18 ` [pve-devel] [PATCH qemu-server 1/4] usb: fix undef error on string match Dominik Csapak
2024-03-22 13:36 ` Fiona Ebner
2024-03-18 11:18 ` [pve-devel] [PATCH qemu-server 2/4] pci: set 'enable-migration' to on for live-migration marked mapped devices Dominik Csapak
2024-03-18 11:18 ` [pve-devel] [PATCH qemu-server 3/4] check_local_resources: add more info per mapped device Dominik Csapak
2024-03-22 13:37 ` Fiona Ebner
2024-04-02 9:35 ` Dominik Csapak
2024-03-18 11:18 ` Dominik Csapak [this message]
2024-03-22 13:37 ` [pve-devel] [PATCH qemu-server 4/4] api: enable live migration for marked mapped pci devices Fiona Ebner
2024-04-02 9:36 ` Dominik Csapak
2024-03-18 11:18 ` [pve-devel] [PATCH docs 1/2] qm: resource mapping: add description for `mdev` option Dominik Csapak
2024-03-18 11:18 ` [pve-devel] [PATCH docs 2/2] qm: resource mapping: document `live-migration-capable` setting Dominik Csapak
2024-03-18 11:18 ` [pve-devel] [PATCH manager 1/1] ui: allow configuring and live migration of mapped pci resources Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240318111836.1947580-7-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal