Re: [Qemu-devel] [PATCH v4 0/8] Call check and invalidate_cache from coroutine context

2018-03-06 Thread Kevin Wolf
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

2018-03-06 Thread Paolo Bonzini
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

2018-03-06 Thread Kevin Wolf
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

2018-03-01 Thread Paolo Bonzini
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