[libvirt PATCH 61/80] qemu: Refactor qemuMigrationDstPrepareFresh

Pavel Hrdina phrdina at redhat.com
Thu May 12 15:51:15 UTC 2022


On Tue, May 10, 2022 at 05:21:22PM +0200, Jiri Denemark wrote:
> Offline migration jumps over a big part of qemuMigrationDstPrepareFresh.
> Let's move that part into a new qemuMigrationDstPrepareActive function
> to make the code easier to follow.
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  src/qemu/qemu_migration.c | 374 +++++++++++++++++++++-----------------
>  1 file changed, 206 insertions(+), 168 deletions(-)
> 
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index f1e3774034..dc608fb8a4 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -3118,6 +3118,200 @@ qemuMigrationDstPrepareAnyBlockDirtyBitmaps(virDomainObj *vm,
>  }
>  
>  
> +static int
> +qemuMigrationDstPrepareActive(virQEMUDriver *driver,
> +                              virDomainObj *vm,
> +                              virConnectPtr dconn,
> +                              qemuMigrationCookie *mig,
> +                              virStreamPtr st,
> +                              const char *protocol,
> +                              unsigned short port,
> +                              const char *listenAddress,
> +                              size_t nmigrate_disks,
> +                              const char **migrate_disks,
> +                              int nbdPort,
> +                              const char *nbdURI,
> +                              qemuMigrationParams *migParams,
> +                              unsigned long flags)
> +{

[...]

> +    if (qemuProcessFinishStartup(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN,
> +                                 false, VIR_DOMAIN_PAUSED_MIGRATION) < 0)
> +        goto error;
> +
> +    if (!(flags & VIR_MIGRATE_OFFLINE)) {

No need for this check because the function call is guarded by
the same check.

> +        virDomainAuditStart(vm, "migrated", true);
> +        event = virDomainEventLifecycleNewFromObj(vm,
> +                                         VIR_DOMAIN_EVENT_STARTED,
> +                                         VIR_DOMAIN_EVENT_STARTED_MIGRATED);
> +    }
> +
> +    ret = 0;
> +

[...]

> @@ -3140,32 +3334,20 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver,
>                               unsigned long flags)
>  {

[...]

> +    if (!(flags & VIR_MIGRATE_OFFLINE)) {
> +        if (qemuMigrationDstPrepareActive(driver, vm, dconn, mig, st,
> +                                          protocol, port, listenAddress,
> +                                          nmigrate_disks, migrate_disks,
> +                                          nbdPort, nbdURI,
> +                                          migParams, flags) < 0) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20220512/cfa50a50/attachment.sig>


More information about the libvir-list mailing list