qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v6 2/2] block: Support GlusterFS as a QEMU block


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v6 2/2] block: Support GlusterFS as a QEMU block backend
Date: Thu, 06 Sep 2012 09:23:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120717 Thunderbird/14.0

Il 05/09/2012 11:57, Bharata B Rao ha scritto:
>> > What could be the issue here ? In general, how do I ensure that my
>> > aio calls get completed correctly in such scenarios where bdrv_read etc
>> > are called from coroutine context rather than from main thread context ?
> One way to handle this is not to do completion from gluster thread but
> instead schedule a BH that does the completion. In fact I had this approach
> in the earlier versions, but resorted to directly calling completion from
> gluster thread as I didn't see the value of using a BH for completion.
> But I guess its indeed needed to support such scenarios (qcow2 image creation
> on gluster backend).

I think the problem is that we're calling bdrv_drain_all() from
coroutine context.  This is problematic because then the current
coroutine won't yield and won't give other coroutines an occasion to run.

This could be fixed by checking whether we're in coroutine context in
bdrv_drain_all().  If so, instead of draining the queues directly,
schedule a bottom half that does bdrv_drain_all() followed by
qemu_coroutine_enter(), and yield.

If it works, I think this change would be preferrable to using a "magic"
BH in every driver.

Paolo



reply via email to

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