qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup
Date: Thu, 16 Jun 2016 19:06:07 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0

On 16/06/2016 18:56, Stefan Hajnoczi wrote:
> v5:
>  * Mark .pause()/.resume() as coroutine_fn [Paolo]
>  * Switch to coroutine-friendly mirror_drain() in mirror_pause() [Paolo]
>  * Rename block_job_is_paused() to block_job_should_pause() [Fam]
>  * New patch to add block_job_get_aio_context() helper and use it in the
>    aio_poll() loop [Fam]
>  * New patch to make bdrv_remove_aio_notifier() safe during attached/detach
>    callbacks

Good catch too.

Reviewed-by: Paolo Bonzini <address@hidden>

Paolo

> v4:
>  * Add .pause()/.resume() callbacks to really quiesce during
>    block_job_pause_point() [Paolo]
>  * Add AioContext change support for backup block job
>  * Tested drive_mirror + migration and drive_backup + reboot
> 
> v3:
>  * Push infrastructure down into blockjob.c so other jobs can reuse it 
> [Stefan]
>  * Tested with drive_mirror + migration [Stefan]
> 
> v2:
>  * Fam introduced the concept of a synchronous aio_poll() loop to quiesce the
>    block job during detach
> 
> When dataplane is enabled or disabled the drive switches to a new AioContext.
> The mirror and backup block jobs must also move to the new AioContext so that
> drive accesses are always made within its AioContext.
> 
> This series extends the block job pause functionality so that detaching from 
> an
> AioContext pauses the job and attaching to the new AioContext resumes the job.
> 
> Pause points are added to the mirror job so that long I/O loops can yield for
> an AioContext switch.  Other block jobs need pause points too but this can be
> done as a follow-up series.
> 
> Stefan Hajnoczi (8):
>   blockjob: move iostatus reset out of block_job_enter()
>   blockjob: rename block_job_is_paused()
>   blockjob: add pause points
>   blockjob: add block_job_get_aio_context()
>   block: use safe iteration over AioContext notifiers
>   blockjob: add AioContext attached callback
>   mirror: follow AioContext change gracefully
>   backup: follow AioContext change gracefully
> 
>  block.c                   |  46 ++++++++++++++++-----
>  block/backup.c            |  22 ++++++----
>  block/mirror.c            |  43 +++++++++++++++----
>  blockdev.c                |   1 +
>  blockjob.c                | 103 
> ++++++++++++++++++++++++++++++++++++++++------
>  include/block/block_int.h |   2 +
>  include/block/blockjob.h  |  51 +++++++++++++++++------
>  7 files changed, 217 insertions(+), 51 deletions(-)
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]