On 2/19/19 5:23 AM, Kevin Wolf wrote: > Am 18.02.2019 um 21:57 hat Eric Blake geschrieben: >> On 2/18/19 10:18 AM, Kevin Wolf wrote: >>> Now that bdrv_set_aio_context() works inside drained sections, it can >>> also use the real drain function instead of open coding something >>> similar. >>> >>> Signed-off-by: Kevin Wolf <kw...@redhat.com> >>> ---
>>> +/* The caller must own the AioContext lock for the old AioContext of bs, >>> but it >>> + * must not own the AioContext lock for new_context. */ >> >> Is this comment still accurate, given >> >>> void bdrv_set_aio_context(BlockDriverState *bs, AioContext *new_context) >>> { >>> - AioContext *ctx = bdrv_get_aio_context(bs); >>> - >>> - if (ctx == new_context) { >>> + if (bdrv_get_aio_context(bs) == new_context) { >>> return; >>> } >> >> the short-circuiting when the old context is the new context? > > Hm, yes, old == new is an exception where you quite obviously can't have > old locked and new unlocked at the same time. > > So is adding this enough? > > (unless new_context is the same as the current context of bs) Works for me. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org