[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 10/20] block: drain from main loop thread in bdrv_co_yield_to_drain()
On Tue, May 02, 2023 at 06:21:20PM +0200, Kevin Wolf wrote: > Am 25.04.2023 um 19:27 hat Stefan Hajnoczi geschrieben: > > For simplicity, always run BlockDevOps .drained_begin/end/poll() > > callbacks in the main loop thread. This makes it easier to implement the > > callbacks and avoids extra locks. > > > > Move the function pointer declarations from the I/O Code section to the > > Global State section in block-backend-common.h. > > > > Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> > > If we're updating function pointers, we should probably update them in > BdrvChildClass and BlockDriver, too. I'll do that in the next revision. > This means that a non-coroutine caller can't run in an iothread, not > even the home iothread of the BlockDriverState. (I'm not sure if it was > allowed previously. I don't think we're actually doing this, but in > theory it could have worked.) Maybe put a GLOBAL_STATE_CODE() after > handling the bdrv_co_yield_to_drain() case? Or would that look too odd? > > IO_OR_GS_CODE(); > > if (qemu_in_coroutine()) { > bdrv_co_yield_to_drain(bs, true, parent, poll); > return; > } > > GLOBAL_STATE_CODE(); That looks good to me, it makes explicit that IO_OR_GS_CODE() only applies until the end of the if statement. Stefan Attachment:
signature.asc
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |