Re: [Qemu-devel] [PATCH v4 0/8] Call check and invalidate_cache from coroutine context
Am 01.03.2018 um 17:36 hat Paolo Bonzini geschrieben: > Check and invalidate_cache share some parts of the implementation > with the regular I/O path. This is sometimes complicated because the > I/O path wants to use a CoMutex but that is not possible outside coroutine > context. By moving things to coroutine context, we can remove special > cases. In fact, invalidate_cache is already called from coroutine context > because incoming migration is placed in a coroutine. > > I'm including two patches from Stefan to rename the bdrv_create callback > to bdrv_co_create, because it is already called from coroutine context. > The name is now bdrv_co_create_opts, with bdrv_co_create reserved for > the QAPI-based version that Kevin is working on. > > qcow2 still has cache flushing in non-coroutine context, coming from > qcow2_reopen_prepare->qcow2_update_options_prepare, > qcow2_close->qcow2_inactivate and several dirty bitmap functions. Thanks, applied to the block branch. Kevin
Re: [Qemu-devel] [PATCH v4 0/8] Call check and invalidate_cache from coroutine context
On 06/03/2018 14:59, Kevin Wolf wrote: > Am 01.03.2018 um 17:36 hat Paolo Bonzini geschrieben: >> Check and invalidate_cache share some parts of the implementation >> with the regular I/O path. This is sometimes complicated because the >> I/O path wants to use a CoMutex but that is not possible outside coroutine >> context. By moving things to coroutine context, we can remove special >> cases. In fact, invalidate_cache is already called from coroutine context >> because incoming migration is placed in a coroutine. >> >> I'm including two patches from Stefan to rename the bdrv_create callback >> to bdrv_co_create, because it is already called from coroutine context. >> The name is now bdrv_co_create_opts, with bdrv_co_create reserved for >> the QAPI-based version that Kevin is working on. >> >> qcow2 still has cache flushing in non-coroutine context, coming from >> qcow2_reopen_prepare->qcow2_update_options_prepare, >> qcow2_close->qcow2_inactivate and several dirty bitmap functions. > > Hmm... Which commit is this based on? I can't seem to find one where it > applies cleanly. It's on top of bec9c64ef7be8063f1192608b83877bc5c9ea217, I'll respin. Paolo
Re: [Qemu-devel] [PATCH v4 0/8] Call check and invalidate_cache from coroutine context
Am 01.03.2018 um 17:36 hat Paolo Bonzini geschrieben: > Check and invalidate_cache share some parts of the implementation > with the regular I/O path. This is sometimes complicated because the > I/O path wants to use a CoMutex but that is not possible outside coroutine > context. By moving things to coroutine context, we can remove special > cases. In fact, invalidate_cache is already called from coroutine context > because incoming migration is placed in a coroutine. > > I'm including two patches from Stefan to rename the bdrv_create callback > to bdrv_co_create, because it is already called from coroutine context. > The name is now bdrv_co_create_opts, with bdrv_co_create reserved for > the QAPI-based version that Kevin is working on. > > qcow2 still has cache flushing in non-coroutine context, coming from > qcow2_reopen_prepare->qcow2_update_options_prepare, > qcow2_close->qcow2_inactivate and several dirty bitmap functions. Hmm... Which commit is this based on? I can't seem to find one where it applies cleanly. Kevin
[Qemu-devel] [PATCH v4 0/8] Call check and invalidate_cache from coroutine context
Check and invalidate_cache share some parts of the implementation with the regular I/O path. This is sometimes complicated because the I/O path wants to use a CoMutex but that is not possible outside coroutine context. By moving things to coroutine context, we can remove special cases. In fact, invalidate_cache is already called from coroutine context because incoming migration is placed in a coroutine. I'm including two patches from Stefan to rename the bdrv_create callback to bdrv_co_create, because it is already called from coroutine context. The name is now bdrv_co_create_opts, with bdrv_co_create reserved for the QAPI-based version that Kevin is working on. qcow2 still has cache flushing in non-coroutine context, coming from qcow2_reopen_prepare->qcow2_update_options_prepare, qcow2_close->qcow2_inactivate and several dirty bitmap functions. Paolo v3->v4: added patch 4, patch 3 has to go before it Paolo Bonzini (6): qcow2: introduce qcow2_write_caches and qcow2_flush_caches qcow2: fix flushing after dirty bitmap metadata writes qcow2: make qcow2_do_open a coroutine_fn qed: make bdrv_qed_do_open a coroutine_fn block: convert bdrv_invalidate_cache callback to coroutine_fn block: convert bdrv_check callback to coroutine_fn Stefan Hajnoczi (2): block: rename .bdrv_create() to .bdrv_co_create_opts() qcow2: make qcow2_co_create2() a coroutine_fn block.c | 88 ++ block/crypto.c| 8 ++-- block/file-posix.c| 15 +++--- block/file-win32.c| 5 +- block/gluster.c | 12 ++--- block/iscsi.c | 13 ++--- block/nfs.c | 11 +++-- block/parallels.c | 24 ++ block/qcow.c | 5 +- block/qcow2-bitmap.c | 4 +- block/qcow2-refcount.c| 28 +++ block/qcow2.c | 118 +++--- block/qcow2.h | 2 + block/qed-check.c | 1 + block/qed-table.c | 26 -- block/qed.c | 72 +--- block/raw-format.c| 5 +- block/rbd.c | 12 +++-- block/sheepdog.c | 10 ++-- block/ssh.c | 5 +- block/vdi.c | 11 +++-- block/vhdx.c | 12 +++-- block/vmdk.c | 12 +++-- block/vpc.c | 5 +- include/block/block_int.h | 11 +++-- 25 files changed, 358 insertions(+), 157 deletions(-) -- 2.14.3