> > > By setting vm->status to PAUSED before actually sending the request to > > > qemu (and resetting it back if the request fails) we can ignore the > > > event since the event handler does nothing when the guest is already > > > paused. This solution is quite hacky but unfortunately it's the best > > > solution which I was able to come up with and it doesn't introduce a > > > race condition. > > > > You could extend the low-level driver to accept a mask of events to > > be ignored. > > The core problem here is that QEMU only emits a STOP event, with no > corresponding CONT event. If QEMU had been doing both, this patch > would not be neccessary, because we'd see both transitions from QEMU > instead of just one direction. Actually, I don't think CONT event would help in this case. When libvirt is issuing a command to stop qemu emulation, it knows if it failed or succeeded synchronously and may set guest's state appropriately. Having asynchronously processed handler of STOP/CONT event set the guest state is not a good idea. We dealt with code written in such a way before and I guess no-one wants to get back to it :-) So I think we will eventually need to introduce event mask into monitor code. Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list