mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: Implement 'reset' for qemu driver
Signed-off-by: Xu He Jie <xuhj@linux.vnet.ibm.com>
This commit is contained in:
parent
541ff63615
commit
c0e4d4329c
@ -1596,6 +1596,55 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
qemuDomainReset(virDomainPtr dom, unsigned int flags)
|
||||||
|
{
|
||||||
|
struct qemud_driver *driver = dom->conn->privateData;
|
||||||
|
virDomainObjPtr vm;
|
||||||
|
int ret = -1;
|
||||||
|
qemuDomainObjPrivatePtr priv;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
qemuDriverLock(driver);
|
||||||
|
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
||||||
|
qemuDriverUnlock(driver);
|
||||||
|
|
||||||
|
if (!vm) {
|
||||||
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
virUUIDFormat(dom->uuid, uuidstr);
|
||||||
|
qemuReportError(VIR_ERR_NO_DOMAIN,
|
||||||
|
_("no domain with matching uuid '%s'"), uuidstr);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (!virDomainObjIsActive(vm)) {
|
||||||
|
qemuReportError(VIR_ERR_OPERATION_INVALID,
|
||||||
|
"%s", _("domain is not running"));
|
||||||
|
goto endjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv = vm->privateData;
|
||||||
|
qemuDomainObjEnterMonitor(driver, vm);
|
||||||
|
ret = qemuMonitorSystemReset(priv->mon);
|
||||||
|
qemuDomainObjExitMonitor(driver, vm);
|
||||||
|
|
||||||
|
priv->fakeReboot = false;
|
||||||
|
|
||||||
|
endjob:
|
||||||
|
if (qemuDomainObjEndJob(driver, vm) == 0)
|
||||||
|
vm = NULL;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if (vm)
|
||||||
|
virDomainObjUnlock(vm);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Count how many snapshots in a set have external disk snapshots. */
|
/* Count how many snapshots in a set have external disk snapshots. */
|
||||||
static void
|
static void
|
||||||
qemuDomainSnapshotCountExternal(void *payload,
|
qemuDomainSnapshotCountExternal(void *payload,
|
||||||
@ -10386,6 +10435,7 @@ static virDriver qemuDriver = {
|
|||||||
.domainResume = qemudDomainResume, /* 0.2.0 */
|
.domainResume = qemudDomainResume, /* 0.2.0 */
|
||||||
.domainShutdown = qemuDomainShutdown, /* 0.2.0 */
|
.domainShutdown = qemuDomainShutdown, /* 0.2.0 */
|
||||||
.domainReboot = qemuDomainReboot, /* 0.9.3 */
|
.domainReboot = qemuDomainReboot, /* 0.9.3 */
|
||||||
|
.domainReset = qemuDomainReset, /* 0.9.7 */
|
||||||
.domainDestroy = qemuDomainDestroy, /* 0.2.0 */
|
.domainDestroy = qemuDomainDestroy, /* 0.2.0 */
|
||||||
.domainDestroyFlags = qemuDomainDestroyFlags, /* 0.9.4 */
|
.domainDestroyFlags = qemuDomainDestroyFlags, /* 0.9.4 */
|
||||||
.domainGetOSType = qemudDomainGetOSType, /* 0.2.2 */
|
.domainGetOSType = qemudDomainGetOSType, /* 0.2.2 */
|
||||||
|
Loading…
Reference in New Issue
Block a user