[PATCH v2 5/7] qemu: Block migration when transient disk option is enabled
Masayoshi Mizuma
msys.mizuma at gmail.com
Sun Sep 13 12:42:05 UTC 2020
On Tue, Sep 08, 2020 at 03:17:47PM +0200, Peter Krempa wrote:
> On Fri, Aug 28, 2020 at 10:08:35 -0400, Masayoshi Mizuma wrote:
> > From: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>
> >
> > Block migration when transient disk option is enabled because migration
> > requires some blockjobs.
> >
> > Signed-off-by: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>
> > ---
> > src/qemu/qemu_migration.c | 22 ++++++++++++++++++++++
> > 1 file changed, 22 insertions(+)
> >
> > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> > index 0f2f92b211..6fcf5a3a07 100644
> > --- a/src/qemu/qemu_migration.c
> > +++ b/src/qemu/qemu_migration.c
> > @@ -2949,6 +2949,22 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver,
> > }
> >
> >
> > +static bool
> > +qemuMigrationTransientDiskExists(virDomainDefPtr def)
> > +{
> > + size_t i;
> > +
> > + for (i = 0; i < def->ndisks; i++) {
> > + virDomainDiskDefPtr disk = def->disks[i];
> > +
> > + if (disk->transient)
> > + return true;
> > + }
> > +
> > + return false;
> > +}
> > +
> > +
> > virDomainDefPtr
> > qemuMigrationAnyPrepareDef(virQEMUDriverPtr driver,
> > virQEMUCapsPtr qemuCaps,
> > @@ -2971,6 +2987,12 @@ qemuMigrationAnyPrepareDef(virQEMUDriverPtr driver,
> > VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
> > goto cleanup;
> >
> > + /*
> > + * transient disk option is a blocker for migration
> > + */
> > + if (qemuMigrationTransientDiskExists(def))
> > + goto cleanup;
>
> This should really be placed into qemuMigrationSrcIsAllowed() rather
> than open-coded. Migration is used in other places too and doesn't use
> this API to trigger it.
OK, I'll add the following to block the migration.
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index a530c17582..7316d74677 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1397,6 +1397,16 @@ qemuMigrationSrcIsAllowed(virQEMUDriverPtr driver,
_("cannot migrate this domain without dbus-vmstate support"));
return false;
}
+
+ for (i = 0; i < vm->def->ndisks; i++) {
+ virDomainDiskDefPtr disk = vm->def->disks[i];
+
+ if (disk->transient) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("migration with transient disk is not supported"));
+ return false;
+ }
+ }
}
return true;
More information about the libvir-list
mailing list