[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(-)
>
- [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup, Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 4/8] blockjob: add block_job_get_aio_context(), Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 2/8] blockjob: rename block_job_is_paused(), Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 3/8] blockjob: add pause points, Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 6/8] blockjob: add AioContext attached callback, Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 1/8] blockjob: move iostatus reset out of block_job_enter(), Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 8/8] backup: follow AioContext change gracefully, Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 7/8] mirror: follow AioContext change gracefully, Stefan Hajnoczi, 2016/06/16
- [Qemu-devel] [PATCH v5 5/8] block: use safe iteration over AioContext notifiers, Stefan Hajnoczi, 2016/06/16
- Re: [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup, Stefan Hajnoczi, 2016/06/17