|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] Block layer roadmap |
Date: | Thu, 28 Jul 2011 07:52:24 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10 |
On 07/28/2011 07:09 AM, Christoph Hellwig wrote:
On Wed, Jul 27, 2011 at 01:37:31PM +0100, Stefan Hajnoczi wrote:Coroutines in the block layer [Kevin] * Programming model to simplify block drivers without blocking QEMU threadsCan anyone explain what the whole point of this is? It really just is a bit of syntactic sugar for the current async state machines. What does it buy us over going for real threading?
It is threading--just with a common locking model where a single big lock is held to make up for the fact that most of QEMU isn't reentrant.
By restructuring the code to be threaded, we can incrementally remove the big lock if we audit for use of non-reentrant functions and introduce more granular locking.
The whole ucontext/setjmp thing is just an optimization. I would hope it entirely disappears long term as we promote coroutines to full threads.
Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |