From c81f5f7043e9bc1f157e824f9d0c4011d46b7102 Mon Sep 17 00:00:00 2001 From: AlexChen Date: Thu, 29 May 2025 21:31:26 +0800 Subject: [PATCH] libvirt update to version 9.10.0-16 - migration: Add the VIR_MIGRATE_RETURNPATH flag Signed-off-by: AlexChen --- libvirt.spec | 7 +- ...-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch | 117 ++++++++++++++++++ 2 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 migration-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch diff --git a/libvirt.spec b/libvirt.spec index 1937d5b..81cbef1 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -262,7 +262,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 9.10.0 -Release: 15 +Release: 16 License: LGPLv2+ URL: https://libvirt.org/ @@ -339,6 +339,8 @@ Patch0065: chardev-use-path-instead-of-fd-for-stratovirt.patch Patch0066: Revert-qemu-command-Delegate-qemuBuildDriveStr-to-SD.patch Patch0067: Revert-qemu-Remove-pre-blockdev-PFLASH-setup.patch Patch0068: qemu_command-get-disk-alias-from-disk-instead-of-nod.patch +Patch0069: migration-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch + Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon-config-network = %{version}-%{release} @@ -2630,6 +2632,9 @@ exit 0 %endif %changelog +* Thu May 29 2025 AlexChen - 9.10.0-16 +- migration: Add the VIR_MIGRATE_RETURNPATH flag + * Mon May 26 2025 fangyi - 9.10.0-15 - cpu-Add-new-Dharma-CPU-model.patch - qemu-cvm-support-uefi-boot-by-rom.patch diff --git a/migration-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch b/migration-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch new file mode 100644 index 0000000..932f426 --- /dev/null +++ b/migration-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch @@ -0,0 +1,117 @@ +From 85a7a0d905ee9ac750c2d13018dfc6b01e7b3eb9 Mon Sep 17 00:00:00 2001 +From: Adttil <2429917001@qq.com> +Date: Thu, 3 Apr 2025 22:24:08 +0800 +Subject: [PATCH] migration: Add the VIR_MIGRATE_RETURNPATH flag + +In the past we turned on the migration feature QEMU_MIGRATION_CAP_RETURN_PATH +by default, which accelerated the recovery of vcpu during the hot migration rollback, +but at the same time increased the downtime of the hot migration. so we made it easier +by adding a new libvirt parameter (return-path) as a switch for the QEMU_ MIGRATION_CAP_RETURN_PATH +feature, while removing the previous VIR_MIGRATE_TUNNELLED related control logic for return-path. +Signed-off-by: yangtao <2429917001@qq.com> +--- + include/libvirt/libvirt-domain.h | 8 ++++++++ + src/qemu/qemu_migration.c | 6 ++++++ + src/qemu/qemu_migration.h | 1 + + src/qemu/qemu_migration_params.c | 10 +++++----- + tools/virsh-domain.c | 5 +++++ + 5 files changed, 25 insertions(+), 5 deletions(-) + +diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h +index f980288c18..a2549d001c 100644 +--- a/include/libvirt/libvirt-domain.h ++++ b/include/libvirt/libvirt-domain.h +@@ -1100,6 +1100,14 @@ typedef enum { + * Since: 8.5.0 + */ + VIR_MIGRATE_ZEROCOPY = (1 << 20), ++ ++ /* Use return-path to control QEMU_MIGRATION_CAP_RETURN_PATH. ++ * When return-path is enabled, QEMU on the source host won't report completed ++ * migration until the destination QEMU sends a confirmation it successfully loaded ++ * all data. ++ * Since: 9.10.0 ++ */ ++ VIR_MIGRATE_RETURNPATH = (1 << 21), + } virDomainMigrateFlags; + + +diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c +index 8b5d0109f2..5853947e31 100644 +--- a/src/qemu/qemu_migration.c ++++ b/src/qemu/qemu_migration.c +@@ -2623,6 +2623,12 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, + return NULL; + } + ++ if ((flags & VIR_MIGRATE_RETURNPATH) && (flags & VIR_MIGRATE_TUNNELLED)) { ++ virReportError(VIR_ERR_OPERATION_INVALID, "%s", ++ _("VIR_MIGRATE_RETURNPATH and VIR_MIGRATE_TUNNELLED comflict and cannot be used at the same time")); ++ return NULL; ++ } ++ + if (flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)) { + if (flags & VIR_MIGRATE_TUNNELLED) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", +diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h +index 1f309bbdc2..4e1b7dda57 100644 +--- a/src/qemu/qemu_migration.h ++++ b/src/qemu/qemu_migration.h +@@ -62,6 +62,7 @@ + VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES | \ + VIR_MIGRATE_POSTCOPY_RESUME | \ + VIR_MIGRATE_ZEROCOPY | \ ++ VIR_MIGRATE_RETURNPATH | \ + 0) + + /* All supported migration parameters and their types. */ +diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c +index 5c75fa4d8e..545d4da0f4 100644 +--- a/src/qemu/qemu_migration_params.c ++++ b/src/qemu/qemu_migration_params.c +@@ -186,15 +186,15 @@ static const qemuMigrationParamsFlagMapItem qemuMigrationParamsFlagMap[] = { + QEMU_MIGRATION_CAP_MULTIFD, + QEMU_MIGRATION_SOURCE | QEMU_MIGRATION_DESTINATION}, + +- {QEMU_MIGRATION_FLAG_FORBIDDEN, +- VIR_MIGRATE_TUNNELLED, +- QEMU_MIGRATION_CAP_RETURN_PATH, +- QEMU_MIGRATION_SOURCE | QEMU_MIGRATION_DESTINATION}, +- + {QEMU_MIGRATION_FLAG_REQUIRED, + VIR_MIGRATE_ZEROCOPY, + QEMU_MIGRATION_CAP_ZERO_COPY_SEND, + QEMU_MIGRATION_SOURCE}, ++ ++ {QEMU_MIGRATION_FLAG_REQUIRED, ++ VIR_MIGRATE_RETURNPATH, ++ QEMU_MIGRATION_CAP_RETURN_PATH, ++ QEMU_MIGRATION_SOURCE | QEMU_MIGRATION_DESTINATION}, + }; + + /* Translation from VIR_MIGRATE_PARAM_* typed parameters to +diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c +index 89bd737f19..31f479dbb8 100644 +--- a/tools/virsh-domain.c ++++ b/tools/virsh-domain.c +@@ -11010,6 +11010,10 @@ static const vshCmdOptDef opts_migrate[] = { + .type = VSH_OT_BOOL, + .help = N_("use zero-copy mechanism for migrating memory pages") + }, ++ {.name = "return-path", ++ .type = VSH_OT_BOOL, ++ .help = N_("use return-path to control QEMU_MIGRATION_CAP_RETURN_PATH") ++ }, + {.name = "migrateuri", + .type = VSH_OT_STRING, + .completer = virshCompleteEmpty, +@@ -11178,6 +11182,7 @@ doMigrate(void *opaque) + { "tls", VIR_MIGRATE_TLS }, + { "parallel", VIR_MIGRATE_PARALLEL }, + { "suspend", VIR_MIGRATE_PAUSED }, ++ { "return-path", VIR_MIGRATE_RETURNPATH }, + }; + + #ifndef WIN32 +-- +Gitee -- Gitee