1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

qemuDomainSendKey: Relax the qemu driver locking

Currently, there is no reason to hold qemu driver locked
throughout whole API execution. Moreover, we can use the
new qemuDomObjFromDomain() internal API to lookup domain then.
This commit is contained in:
Michal Privoznik 2013-01-24 10:39:06 +01:00
parent 3dbabd29f5
commit 2eb54c74ff

View File

@ -2411,19 +2411,12 @@ static int qemuDomainSendKey(virDomainPtr domain,
}
}
qemuDriverLock(driver);
vm = virDomainFindByUUID(&driver->domains, domain->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(domain->uuid, uuidstr);
virReportError(VIR_ERR_NO_DOMAIN,
_("no domain with matching uuid '%s'"), uuidstr);
if (!(vm = qemuDomObjFromDomain(domain)))
goto cleanup;
}
priv = vm->privateData;
if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY) < 0)
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!virDomainObjIsActive(vm)) {
@ -2432,9 +2425,9 @@ static int qemuDomainSendKey(virDomainPtr domain,
goto endjob;
}
qemuDomainObjEnterMonitorWithDriver(driver, vm);
qemuDomainObjEnterMonitor(driver, vm);
ret = qemuMonitorSendKey(priv->mon, holdtime, keycodes, nkeycodes);
qemuDomainObjExitMonitorWithDriver(driver, vm);
qemuDomainObjExitMonitor(driver, vm);
endjob:
if (qemuDomainObjEndJob(driver, vm) == 0)
@ -2443,7 +2436,6 @@ endjob:
cleanup:
if (vm)
virObjectUnlock(vm);
qemuDriverUnlock(driver);
return ret;
}