[Spice-devel] [PATCH v2] server: add async io support

Alon Levy alevy at redhat.com
Thu Jul 7 00:45:02 PDT 2011


On Thu, Jul 07, 2011 at 09:29:47AM +0200, Gerd Hoffmann wrote:
> >Hi,
> >I find it problematic to decouple the qxl operations upon QXL_IO and the
> >worker operations. For example: upon destroy_surfaces, the qxl resets
> >the tracked guest commands. However, since destroy_surfaces is asynced,
> >the worker might read commands from the ring before handling destroy
> >surfaces, and then the qxl guest commands will be modified.
> 
> That should be fixed on the qemu side I think.  qxl should update
> its status when it receives the notification that the operation is
> complete, not after submitting the request.
> 
> (Ha! first use case for the magic cookie ;)
> 

I could use the cookies, but since I'm already doing a guest_bug when guest
does two asyncs overlapping, I think I can just use the last remembered one
I store for the express purpose of discovering this bug (until now).

> >I suggest a partial decoupling: on async io, the dispatcher will still
> >wait for RED_WORKER_MESSAGE_READY, but the server will set it
> >immediately when it receives the async message.
> 
> No.  I don't want async messages take a round trip to the worker
> thread.  Even if the worker sends an answer instantly alone the
> thread scheduling adds noticeable latencies.
> 
> cheers,
>   Gerd


More information about the Spice-devel mailing list