mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
qemu: Grab a QUERY job when formatting domain XML
It may happen that, for instance after daemon restart, that one thread is still in qemuProcessReconnect(), i.e. filling in runtime information by talking to QEMU on monitor. If another thread then tries to format domain XML (which is currently guarded by plain mutex on virDomainObj) it'll produce incomplete and misleading information (e.g. current size of virtio-mem). This happens because the reconnecting thread talks to QEMU on monitor and thus unlocks the domain object frequently allowing the XML formatting thread to acquire the mutex meanwhile. Resolves: https://issues.redhat.com/browse/RHEL-71042 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
56d448ad0f
commit
6cc93bf288
@ -6163,6 +6163,9 @@ static char
|
||||
if (virDomainGetXMLDescEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainObjBeginJob(vm, VIR_JOB_QUERY) < 0)
|
||||
goto cleanup;
|
||||
|
||||
qemuDomainUpdateCurrentMemorySize(vm);
|
||||
|
||||
if ((flags & VIR_DOMAIN_XML_MIGRATABLE))
|
||||
@ -6177,6 +6180,8 @@ static char
|
||||
|
||||
ret = qemuDomainFormatXML(driver, vm, flags);
|
||||
|
||||
virDomainObjEndJob(vm);
|
||||
|
||||
cleanup:
|
||||
virDomainObjEndAPI(&vm);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user