[PATCH 21/80] qemu: migration: Remove pre-blockdev code paths

Pavel Hrdina phrdina at redhat.com
Wed Aug 3 15:45:07 UTC 2022


On Tue, Jul 26, 2022 at 04:36:59PM +0200, Peter Krempa wrote:
> Assume that QEMU_CAPS_BLOCKDEV is present and remove all code executed
> when it's not.
> 
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>  src/qemu/qemu_migration.c | 127 ++++++++------------------------------
>  1 file changed, 25 insertions(+), 102 deletions(-)
> 
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 8e9428a5bb..ef24a1dedf 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c

[...]

> @@ -2687,41 +2626,25 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver,
>      }
> 
>      if (flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)) {
> -        if (flags & VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES &&
> -            !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) {
> +        if (flags & VIR_MIGRATE_TUNNELLED) {
>              virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
> -                           _("VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES is not supported by this QEMU"));
> -            return NULL;
> +                           _("migration of non-shared storage is not supported with tunnelled migration and this QEMU"));
>          }
> 
> -        if (flags & VIR_MIGRATE_TUNNELLED) {
> -            if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) {
> -                virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
> -                               _("migration of non-shared storage is not supported with tunnelled migration and this QEMU"));
> -                return NULL;
> -            }
> -
> -            if (nmigrate_disks) {
> -                virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
> -                               _("Selecting disks to migrate is not implemented for tunnelled migration"));
> -                return NULL;
> -            }
> -        } else {
> -            if (nmigrate_disks) {
> -                size_t i, j;
> -                /* Check user requested only known disk targets. */
> -                for (i = 0; i < nmigrate_disks; i++) {
> -                    for (j = 0; j < vm->def->ndisks; j++) {
> -                        if (STREQ(vm->def->disks[j]->dst, migrate_disks[i]))
> -                            break;
> -                    }
> +        if (nmigrate_disks) {
> +            size_t i, j;
> +            /* Check user requested only known disk targets. */
> +            for (i = 0; i < nmigrate_disks; i++) {
> +                for (j = 0; j < vm->def->ndisks; j++) {
> +                    if (STREQ(vm->def->disks[j]->dst, migrate_disks[i]))
> +                        break;
> +                }
> 
> -                    if (j == vm->def->ndisks) {
> -                        virReportError(VIR_ERR_INVALID_ARG,
> -                                       _("disk target %s not found"),
> -                                       migrate_disks[i]);
> -                        return NULL;
> -                    }
> +                if (j == vm->def->ndisks) {
> +                    virReportError(VIR_ERR_INVALID_ARG,
> +                                   _("disk target %s not found"),
> +                                   migrate_disks[i]);
> +                    return NULL;
>                  }
>              }

This changes doesn't look equivalent.

Before this patch the `for` loop to check `nmigrate_disks` would be done
only for non-tunneled migration but after this changes it is done even
for tunneled migration.

In addition the new code dropped the error path for tunneled migration
if `nmigrate_disks` is not NULL.

Not sure if this was intended or is based on some other knowledge and
code that is not in scope of this patch.

Pavel
-------------- 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/20220803/c1a04b0a/attachment-0001.sig>


More information about the libvir-list mailing list