qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous progr


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming
Date: Wed, 27 Jul 2011 12:03:57 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20110707 Thunderbird/5.0

Am 27.07.2011 11:45, schrieb Aneesh Kumar K.V:
> On Tue, 26 Jul 2011 10:21:12 +0100, Stefan Hajnoczi <address@hidden> wrote:
>> QEMU is event-driven and suffers when blocking operations are performed 
>> because
>> VM execution may be stopped until the operation completes.  Therefore many
>> operations that could block are performed asynchronously and a callback is
>> invoked when the operation has completed.  This allows QEMU to continue
>> executing while the operation is pending.
>>
>> The downside to callbacks is that they split up code into many smaller
>> functions, each of which is a single step in a state machine that quickly
>> becomes complex and hard to understand.  Callback functions also result in 
>> lots
>> of noise as variables are packed and unpacked into temporary structs that 
>> pass
>> state to the callback function.
>>
>> This patch series introduces coroutines as a solution for writing 
>> asynchronous
>> code while still having a nice sequential control flow.  The semantics are
>> explained in the second patch.  The fourth patch adds automated tests.
>>
>> A nice feature of coroutines is that it is relatively easy to take 
>> synchronous
>> code and lift it into a coroutine to make it asynchronous.  Work has been 
>> done
>> to move qcow2 request processing into coroutines and thereby make it
>> asynchronous (today qcow2 will perform synchronous metadata accesses).  This
>> qcow2 work is still ongoing and not quite ready for mainline yet.
>>
>> v8:
>>  * Bisectability: introduce gthread implementation before ucontext/fibers
> 
> Can we also get CoMutex and CoQueue patches also merged. I use them in
> the VirtFS series. 
> 
> http://repo.or.cz/w/qemu/kevin.git/shortlog/refs/heads/coroutine-devel
> http://repo.or.cz/w/qemu/v9fs.git/commit/318ef0b9b01cd296f8c30d8288139b9bed859892

I introduce these in my block coroutine patches. I posted a RFC last
week and the first "real" patch series yesterday, so I hope they get
review and can be merged into master soon.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]