Description of problem:
Currently when the QEMU driver issues a monitor command, it will wait forever for a reply to arrive. Any further API calls which may change the VM state are blocked during this time and will time out after failing to obtain the state change lock. libvirt should be able to timeout the original command and in some cases carry on, normally.
If the command was a 'query-xxx' info retrieval, we should be able to wait for the eventual reply in the background & discard it, in order to recover. Then we can allow further monitor commands in the future.
If the command was a state change command (eg hotplug), the catch all scenario should be to disallow all further use of the monitor, since QEMU state is now inconsistent with libvirt's XML config. We might be able to write fixup handlers on the case by case basis for specific commands.
libvirt must also allow the 'destroy' command to be run at any time.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
Pretty sure we've had monitor job timeout for a long while