all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+)
@ 2025-07-28 14:30 Fiona Ebner
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 1/3] migration: status check: order states in regex alphabetically Fiona Ebner
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Fiona Ebner @ 2025-07-28 14:30 UTC (permalink / raw)
  To: pve-devel

There are some states that 'query-migrate' can return [0] which are
not properly handled by Proxmox VE yet.

In particular, as reported in the community forum [1], with QEMU 10.0,
the 'device' status can be present with migration parameters used by
Proxmox VE.

Two other states 'cancelling' and 'wait-unplug' are also explicitly
handled now.

[0]: https://qemu.readthedocs.io/en/master/interop/qemu-qmp-ref.html#enum-QMP-migration.MigrationStatus
[1]: https://forum.proxmox.com/threads/proxmox-ve-9-0-beta-released.168619/post-786535

Fiona Ebner (3):
  migration: status check: order states in regex alphabetically
  migration: handle 'device' migration status newly present in QEMU
    10.0+
  migration: handle 'cancelling' and 'wait-unplug' status

 src/PVE/QemuMigrate.pm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

-- 
2.47.2



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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH qemu-server 1/3] migration: status check: order states in regex alphabetically
  2025-07-28 14:30 [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Fiona Ebner
@ 2025-07-28 14:30 ` Fiona Ebner
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 2/3] migration: handle 'device' migration status newly present in QEMU 10.0+ Fiona Ebner
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Fiona Ebner @ 2025-07-28 14:30 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 src/PVE/QemuMigrate.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PVE/QemuMigrate.pm b/src/PVE/QemuMigrate.pm
index 251fcc79..edaf2f25 100644
--- a/src/PVE/QemuMigrate.pm
+++ b/src/PVE/QemuMigrate.pm
@@ -1354,7 +1354,7 @@ sub phase2 {
             next;
         }
 
-        if (!defined($status) || $status !~ m/^(active|completed|failed|cancelled)$/im) {
+        if (!defined($status) || $status !~ m/^(active|cancelled|completed|failed)$/im) {
             die $merr if $merr;
             die "unable to parse migration status '$status' - aborting\n";
         }
-- 
2.47.2



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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH qemu-server 2/3] migration: handle 'device' migration status newly present in QEMU 10.0+
  2025-07-28 14:30 [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Fiona Ebner
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 1/3] migration: status check: order states in regex alphabetically Fiona Ebner
@ 2025-07-28 14:30 ` Fiona Ebner
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 3/3] migration: handle 'cancelling' and 'wait-unplug' status Fiona Ebner
  2025-07-29  6:05 ` [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Thomas Lamprecht
  3 siblings, 0 replies; 5+ messages in thread
From: Fiona Ebner @ 2025-07-28 14:30 UTC (permalink / raw)
  To: pve-devel

The QMP reference docs describe the 'device' status as:

> During device serialisation (also known as switchover phase). Before
> 9.2, this is only used when (1) in precopy, and (2) when
> pre-switchover capability is enabled. After 10.0, this state will
> always be present for every migration procedure as the switchover
> phase.

Since Proxmox VE did not use the pre-switchover capability, it has not
been observed before QEMU 10.0. The state is still only reached during
block device inactivation, but it will be reached.

Reported in the community forum:
https://forum.proxmox.com/threads/168619/post-786535

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 src/PVE/QemuMigrate.pm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/PVE/QemuMigrate.pm b/src/PVE/QemuMigrate.pm
index edaf2f25..5b854292 100644
--- a/src/PVE/QemuMigrate.pm
+++ b/src/PVE/QemuMigrate.pm
@@ -1354,7 +1354,7 @@ sub phase2 {
             next;
         }
 
-        if (!defined($status) || $status !~ m/^(active|cancelled|completed|failed)$/im) {
+        if (!defined($status) || $status !~ m/^(active|cancelled|completed|device|failed)$/im) {
             die $merr if $merr;
             die "unable to parse migration status '$status' - aborting\n";
         }
@@ -1394,7 +1394,7 @@ sub phase2 {
             die "aborting\n";
         }
 
-        if ($status ne 'active') {
+        if ($status ne 'active' && $status ne 'device') {
             $self->log('info', "migration status: $status");
             last;
         }
-- 
2.47.2



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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH qemu-server 3/3] migration: handle 'cancelling' and 'wait-unplug' status
  2025-07-28 14:30 [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Fiona Ebner
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 1/3] migration: status check: order states in regex alphabetically Fiona Ebner
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 2/3] migration: handle 'device' migration status newly present in QEMU 10.0+ Fiona Ebner
@ 2025-07-28 14:30 ` Fiona Ebner
  2025-07-29  6:05 ` [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Thomas Lamprecht
  3 siblings, 0 replies; 5+ messages in thread
From: Fiona Ebner @ 2025-07-28 14:30 UTC (permalink / raw)
  To: pve-devel

When in 'cancelling' status, wait until the transition to 'cancelled'
happens. Similarly, when in 'wait-unplug' status, wait for the
transition to the next state.

According to the QMP reference docs:

cancelling:
> in the process of cancelling migration.

wait-unplug:
> wait for device unplug request by guest OS to be completed.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 src/PVE/QemuMigrate.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/PVE/QemuMigrate.pm b/src/PVE/QemuMigrate.pm
index 5b854292..9585e292 100644
--- a/src/PVE/QemuMigrate.pm
+++ b/src/PVE/QemuMigrate.pm
@@ -1349,7 +1349,8 @@ sub phase2 {
         }
 
         my $status = $stat->{status};
-        if (defined($status) && $status =~ m/^(setup)$/im) {
+        if (defined($status) && $status =~ m/^(cancelling|setup|wait-unplug)$/im) {
+            $self->log('info', "migration in status '$status' - waiting for transition");
             sleep(1);
             next;
         }
-- 
2.47.2



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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+)
  2025-07-28 14:30 [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Fiona Ebner
                   ` (2 preceding siblings ...)
  2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 3/3] migration: handle 'cancelling' and 'wait-unplug' status Fiona Ebner
@ 2025-07-29  6:05 ` Thomas Lamprecht
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Lamprecht @ 2025-07-29  6:05 UTC (permalink / raw)
  To: pve-devel, Fiona Ebner

On Mon, 28 Jul 2025 16:30:30 +0200, Fiona Ebner wrote:
> There are some states that 'query-migrate' can return [0] which are
> not properly handled by Proxmox VE yet.
> 
> In particular, as reported in the community forum [1], with QEMU 10.0,
> the 'device' status can be present with migration parameters used by
> Proxmox VE.
> 
> [...]

Got already positive feedback in the forum, so: Applied, thanks!

FWIW, might be worth to transform the regex to a hash and lc() the key before
checking. Seems also a bit odd to me that the regex is using multiline, is that
really needed here? But all pre-existing and not really hurting, so really not
high priority to check.

[1/3] migration: status check: order states in regex alphabetically
      commit: d3842716a1156a99b937af9c8f89ea43defff13d
[2/3] migration: handle 'device' migration status newly present in QEMU 10.0+
      commit: 34d03f914821479515272df79792ab3ae17a1c06
[3/3] migration: handle 'cancelling' and 'wait-unplug' status
      commit: c106f1326daec73677aa33ec5091ac70fe9e6789


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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-07-29  6:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-28 14:30 [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Fiona Ebner
2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 1/3] migration: status check: order states in regex alphabetically Fiona Ebner
2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 2/3] migration: handle 'device' migration status newly present in QEMU 10.0+ Fiona Ebner
2025-07-28 14:30 ` [pve-devel] [PATCH qemu-server 3/3] migration: handle 'cancelling' and 'wait-unplug' status Fiona Ebner
2025-07-29  6:05 ` [pve-devel] [PATCH-SERIES qemu-server 0/3] fix migration status handling (for QEMU 10.0+) Thomas Lamprecht

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