[PATCH 7/8] qemu: add dbus-vmstate helper migration support
Marc-André Lureau
marcandre.lureau at redhat.com
Mon Feb 24 15:58:24 UTC 2020
Hi
On Thu, Feb 20, 2020 at 10:04 AM Michal Privoznik <mprivozn at redhat.com> wrote:
>
> On 1/14/20 2:46 PM, marcandre.lureau at redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau at redhat.com>
> >
> > Helper processes may have their state migrated with QEMU data stream
> > thanks to the QEMU "dbus-vmstate".
> >
> > libvirt maintains the list of helpers to be migrated. The
> > "dbus-vmstate" is added when required, and given the list of helper
> > Ids that must be migrated, on save & load sides.
> >
> > See also:
> > https://git.qemu.org/?p=qemu.git;a=blob;f=docs/interop/dbus-vmstate.rst
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
> > ---
> > src/qemu/qemu_alias.c | 7 +++
> > src/qemu/qemu_alias.h | 2 +
> > src/qemu/qemu_command.c | 62 +++++++++++++++++++++++++++
> > src/qemu/qemu_command.h | 3 ++
> > src/qemu/qemu_dbus.c | 14 ++++++
> > src/qemu/qemu_dbus.h | 4 ++
> > src/qemu/qemu_domain.c | 10 +++++
> > src/qemu/qemu_domain.h | 5 +++
> > src/qemu/qemu_hotplug.c | 82 ++++++++++++++++++++++++++++++++++++
> > src/qemu/qemu_hotplug.h | 8 ++++
> > src/qemu/qemu_migration.c | 51 ++++++++++++++++++++++
> > src/qemu/qemu_monitor.c | 21 +++++++++
> > src/qemu/qemu_monitor.h | 3 ++
> > src/qemu/qemu_monitor_json.c | 15 +++++++
> > src/qemu/qemu_monitor_json.h | 5 +++
> > 15 files changed, 292 insertions(+)
> >
>
>
> > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> > index 71d0bb0879..8c281f3a70 100644
> > --- a/src/qemu/qemu_migration.c
> > +++ b/src/qemu/qemu_migration.c
> > @@ -1125,10 +1125,18 @@ qemuMigrationSrcIsAllowed(virQEMUDriverPtr driver,
> > bool remote,
> > unsigned int flags)
> > {
> > + qemuDomainObjPrivatePtr priv = vm->privateData;
> > int nsnapshots;
> > int pauseReason;
> > size_t i;
> >
> > + if (virStringListLength((const char **)priv->dbusVMStateIds) &&
> > + !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DBUS_VMSTATE)) {
> > + virReportError(VIR_ERR_OPERATION_INVALID, "%s",
> > + _("cannot migrate this domain without dbus-vmstate support"));
> > + return false;
> > + }
> > +
>
> This should be done in the if(!OFFLINE) a few lines below. IIUC, vmstate
> is runtime thing, and when doing offline migration (e.g. just copying
> over disks and XMLs), no qemu is involved and thus no vmstate matters.
Right, thanks
>
> > /* perform these checks only when migrating to remote hosts */
> > if (remote) {
> > nsnapshots = virDomainSnapshotObjListNum(vm->snapshots, NULL, 0);
>
> Michal
>
More information about the libvir-list
mailing list