From f55aedc84538015d8fb0724d87829266223f78bf Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Tue, 10 May 2022 15:20:25 +0200 Subject: [PATCH] Introduce VIR_MIGRATE_POSTCOPY_RESUME flag This flag can be used to restart post-copy migration once it failed because of a broken connection. Signed-off-by: Jiri Denemark Reviewed-by: Peter Krempa Reviewed-by: Pavel Hrdina --- include/libvirt/libvirt-domain.h | 5 +++++ src/libvirt-domain.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index caf99d41bc..e7020f19cc 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -1084,6 +1084,11 @@ typedef enum { */ VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES = (1 << 18), + /* Resume migration which failed in post-copy phase. + * + * Since: 8.5.0 + */ + VIR_MIGRATE_POSTCOPY_RESUME = (1 << 19), } virDomainMigrateFlags; diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 10fc3188fe..a5f18f953e 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -9771,6 +9771,12 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain, * this, libvirt will refuse to cancel post-copy migration via * virDomainAbortJob. * + * Failed post-copy migration can be recovered once the cause for the failure + * (e.g., a network issue) is resolved by repeating the migration with an + * additional VIR_MIGRATE_POSTCOPY_RESUME flag. This will recreate the + * connection and resume migration from the point where it failed. This step + * can be repeated in case the migration breaks again. + * * The following domain life cycle events are emitted during post-copy * migration: * VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY (on the source) -- migration entered