On Thu, Jun 16, 2016 at 05:56:21PM +0100, 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 > > 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(-)
Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
signature.asc
Description: PGP signature