mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 22:25:25 +00: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. */
|
||||
static void
|
||||
qemuDomainSnapshotCountExternal(void *payload,
|
||||
@ -10386,6 +10435,7 @@ static virDriver qemuDriver = {
|
||||
.domainResume = qemudDomainResume, /* 0.2.0 */
|
||||
.domainShutdown = qemuDomainShutdown, /* 0.2.0 */
|
||||
.domainReboot = qemuDomainReboot, /* 0.9.3 */
|
||||
.domainReset = qemuDomainReset, /* 0.9.7 */
|
||||
.domainDestroy = qemuDomainDestroy, /* 0.2.0 */
|
||||
.domainDestroyFlags = qemuDomainDestroyFlags, /* 0.9.4 */
|
||||
.domainGetOSType = qemudDomainGetOSType, /* 0.2.2 */
|
||||
|
Loading…
Reference in New Issue
Block a user