[Qemu-devel] [PATCH 0/4] blockjob: reinstate busy=false/busy=true in block_job_sleep_ns

Paolo Bonzini posted 4 patches 6 years, 4 months ago
Failed in applying to current master (apply log)
block/backup.c               |  4 +--
block/commit.c               |  2 +-
block/io.c                   |  8 ++---
block/mirror.c               |  6 ++--
block/stream.c               |  2 +-
blockjob.c                   | 76 ++++++++++++++++++++++++++++++++++----------
include/block/blockjob.h     |  5 ++-
include/block/blockjob_int.h |  7 ++--
tests/test-blockjob-txn.c    |  2 +-
9 files changed, 79 insertions(+), 33 deletions(-)
[Qemu-devel] [PATCH 0/4] blockjob: reinstate busy=false/busy=true in block_job_sleep_ns
Posted by Paolo Bonzini 6 years, 4 months ago
In order to avoid reentering a scheduled coroutine this series uses
a QEMUTimer outside co_aio_sleep_ns.  The timer callback just calls
block_job_enter, and can be easily cancelled with timer_del.

This fixes the outstanding issues with block jobs, without reverting
the new checks that Jeff added.

I have not run the full qemu-iotests suite, but the main affected
tests (030, 041, 055, 097, 176, 200) work fine.

Paolo

Kevin Wolf (1):
  block: Expect graph changes in bdrv_parent_drained_begin/end

Paolo Bonzini (3):
  blockjob: remove clock argument from block_job_sleep_ns
  blockjob: introduce block_job_do_yield
  blockjob: reimplement block_job_sleep_ns to allow cancellation

 block/backup.c               |  4 +--
 block/commit.c               |  2 +-
 block/io.c                   |  8 ++---
 block/mirror.c               |  6 ++--
 block/stream.c               |  2 +-
 blockjob.c                   | 76 ++++++++++++++++++++++++++++++++++----------
 include/block/blockjob.h     |  5 ++-
 include/block/blockjob_int.h |  7 ++--
 tests/test-blockjob-txn.c    |  2 +-
 9 files changed, 79 insertions(+), 33 deletions(-)

-- 
2.14.3


Re: [Qemu-devel] [PATCH 0/4] blockjob: reinstate busy=false/busy=true in block_job_sleep_ns
Posted by Jeff Cody 6 years, 4 months ago
On Wed, Nov 29, 2017 at 11:25:09AM +0100, Paolo Bonzini wrote:
> In order to avoid reentering a scheduled coroutine this series uses
> a QEMUTimer outside co_aio_sleep_ns.  The timer callback just calls
> block_job_enter, and can be easily cancelled with timer_del.
> 
> This fixes the outstanding issues with block jobs, without reverting
> the new checks that Jeff added.
> 
> I have not run the full qemu-iotests suite, but the main affected
> tests (030, 041, 055, 097, 176, 200) work fine.
> 
> Paolo
> 
> Kevin Wolf (1):
>   block: Expect graph changes in bdrv_parent_drained_begin/end
> 
> Paolo Bonzini (3):
>   blockjob: remove clock argument from block_job_sleep_ns
>   blockjob: introduce block_job_do_yield
>   blockjob: reimplement block_job_sleep_ns to allow cancellation
> 
>  block/backup.c               |  4 +--
>  block/commit.c               |  2 +-
>  block/io.c                   |  8 ++---
>  block/mirror.c               |  6 ++--
>  block/stream.c               |  2 +-
>  blockjob.c                   | 76 ++++++++++++++++++++++++++++++++++----------
>  include/block/blockjob.h     |  5 ++-
>  include/block/blockjob_int.h |  7 ++--
>  tests/test-blockjob-txn.c    |  2 +-
>  9 files changed, 79 insertions(+), 33 deletions(-)
> 
> -- 
> 2.14.3
>


For the series:

Tested-By: Jeff Cody <jcody@redhat.com>

Re: [Qemu-devel] [PATCH 0/4] blockjob: reinstate busy=false/busy=true in block_job_sleep_ns
Posted by Fam Zheng 6 years, 4 months ago
On Wed, 11/29 11:25, Paolo Bonzini wrote:
> In order to avoid reentering a scheduled coroutine this series uses
> a QEMUTimer outside co_aio_sleep_ns.  The timer callback just calls
> block_job_enter, and can be easily cancelled with timer_del.
> 
> This fixes the outstanding issues with block jobs, without reverting
> the new checks that Jeff added.

Reviewed-by: Fam Zheng <famz@redhat.com>