mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemuDomainObjBeginJob: Don't account DESTROY job to maxQueuedJobs
When trying to destroy a domain (e.g. because we've seen EOF on the monitor) we try to acquire QEMU_JOB_DESTROY. However, if max_queued is set in qemu.conf this may fail and since our code doesn't count on that we will still report domain as active even though the qemu process is long gone. More specifically, if we've seen EOF on the monitor, qemuProcessHandleMonitorEOF() is called which sends MONITOR_EOF job to the event worker pool and unregisters monitor from the event loop. The worker pool calls processMonitorEOFEvent() which tries to set job which may fail due to the limit as described above. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
b704d60e89
commit
c17666419b
@ -5401,7 +5401,8 @@ qemuDomainObjBeginJobInternal(virQEMUDriverPtr driver,
|
||||
then = now + QEMU_JOB_WAIT_TIME;
|
||||
|
||||
retry:
|
||||
if (cfg->maxQueuedJobs &&
|
||||
if ((!async && job != QEMU_JOB_DESTROY) &&
|
||||
cfg->maxQueuedJobs &&
|
||||
priv->jobs_queued > cfg->maxQueuedJobs) {
|
||||
goto error;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user