[libvirt] [PATCH 4/6] Added domainMigrateStartPostCopy in qemu driver
Jiri Denemark
jdenemar at redhat.com
Wed Sep 24 15:21:11 UTC 2014
On Wed, Sep 24, 2014 at 15:06:57 +0200, Jiri Denemark wrote:
> On Tue, Sep 23, 2014 at 16:09:59 +0200, Cristian Klein wrote:
> > Signed-off-by: Cristian Klein <cristian.klein at cs.umu.se>
> > ---
> > src/qemu/qemu_driver.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> > src/qemu/qemu_monitor.c | 19 +++++++++++++++++++
> > src/qemu/qemu_monitor.h | 2 ++
> > src/qemu/qemu_monitor_json.c | 18 ++++++++++++++++++
> > src/qemu/qemu_monitor_json.h | 1 +
> > src/qemu/qemu_monitor_text.c | 11 +++++++++++
> > src/qemu/qemu_monitor_text.h | 2 ++
>
> No need to touch qemu_monitor_text.[ch] since we will only use QMP with
> any QEMU that supports post-copy migration.
>
> > 7 files changed, 97 insertions(+)
> >
> > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> > index e73d4f9..02c9a3b 100644
> > --- a/src/qemu/qemu_driver.c
> > +++ b/src/qemu/qemu_driver.c
> > @@ -11861,6 +11861,49 @@ qemuDomainGetJobStats(virDomainPtr dom,
> > }
> >
> >
> > +static int qemuMigrateStartPostCopy(virDomainPtr dom)
> > +{
> > + virQEMUDriverPtr driver = dom->conn->privateData;
> > + virDomainObjPtr vm;
> > + int ret = -1;
> > + qemuDomainObjPrivatePtr priv;
> > +
> > + if (!(vm = qemuDomObjFromDomain(dom)))
> > + goto cleanup;
> > +
> > + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0)
> > + goto cleanup;
> > +
> > + if (!virDomainObjIsActive(vm)) {
> > + virReportError(VIR_ERR_OPERATION_INVALID,
> > + "%s", _("domain is not running"));
> > + goto endjob;
> > + }
> > +
> > + priv = vm->privateData;
> > +
> > + if (priv->job.asyncJob != QEMU_ASYNC_JOB_MIGRATION_OUT) {
> > + virReportError(VIR_ERR_OPERATION_INVALID, "%s",
> > + _("post-copy can only be started "
> > + "while migration is in progress"));
>
> We forbid the use of tabs for indentation. Please, run make syntax-check
> (in addition to make check) before sending patches to catch this type of
> issues.
>
> > + goto cleanup;
> > + }
> > +
> > + VIR_DEBUG("Starting post-copy");
> > + qemuDomainObjEnterMonitor(driver, vm);
> > + ret = qemuMonitorMigrateStartPostCopy(priv->mon);
> > + qemuDomainObjExitMonitor(driver, vm);
> > +
> > + endjob:
> > + if (!qemuDomainObjEndJob(driver, vm))
> > + vm = NULL;
> > +
> > + cleanup:
> > + if (vm)
> > + virObjectUnlock(vm);
> > + return ret;
> > +}
> > +
> > static int qemuDomainAbortJob(virDomainPtr dom)
> > {
> > virQEMUDriverPtr driver = dom->conn->privateData;
> > @@ -18259,6 +18302,7 @@ static virDriver qemuDriver = {
> > .nodeGetFreePages = qemuNodeGetFreePages, /* 1.2.6 */
> > .connectGetDomainCapabilities = qemuConnectGetDomainCapabilities, /* 1.2.7 */
> > .connectGetAllDomainStats = qemuConnectGetAllDomainStats, /* 1.2.8 */
> > + .domainMigrateStartPostCopy = qemuMigrateStartPostCopy, /* 1.2.9 */
>
> This will need to be updated.
and renamed as qemuDomainMigrateStartPostCopy.
Jirka
More information about the libvir-list
mailing list