[libvirt] [RFC PATCH] qemu: Fail APIs not allowed during async job
Jiri Denemark
jdenemar at redhat.com
Mon Jul 18 10:49:02 UTC 2011
On Fri, Jul 15, 2011 at 09:09:52 -0600, Eric Blake wrote:
> On 07/15/2011 08:41 AM, Jiri Denemark wrote:
> > When an asynchronous job is running while another API that is
> > incompatible with that job is called, we now try to wait until the job
> > finishes and either run the API or fail with timeout. I guess nicer
> > solution is to just fail such API immediately and let the application
> > retry once the asynchronous job ends.
> > ---
> > src/qemu/THREADS.txt | 5 ++---
> > src/qemu/qemu_domain.c | 28 +++++++++++++++-------------
> > 2 files changed, 17 insertions(+), 16 deletions(-)
>
> If all such APIs have a flag argument, then we could make the behavior
> configurable - passing 0 blocks until possible, and passing
> VIR_DOMAIN_OPERATION_NONBLOCK as a flag returns immediately.
>
> But we probably don't have uniform flags arguments. Which APIs are
> affected?
All APIs that modify state, currently the following list (qemu driver names):
Resume
Shutdown
Reboot
SetMemoryFlags
InjectNMI
SetVcpusFlags
Suspend
Restore
ModifyDeviceFlags
SnapshotCreateActive
RevertToSnapshot
SnapshotDelete
MonitorCommand
> If we can't control things by a flag, then returning a specific failure
> seems like the best way to go (it is easier to write an app that can
> retry than it is to write an app that doesn't suffer from unintended
> blocking).
>
> So this patch seems sane to me, although I'd still like a list of all
> affected APIs before giving ack.
BTW, the patch is not complete so acking or not would only affect the idea.
Jirka
More information about the libvir-list
mailing list