qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup
@ 2016-06-16 16:56 Stefan Hajnoczi
  2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 1/8] blockjob: move iostatus reset out of block_job_enter() Stefan Hajnoczi
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Stefan Hajnoczi @ 2016-06-16 16:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, jjherne, Fam Zheng, Paolo Bonzini, Jeff Cody, mreitz,
	Stefan Hajnoczi

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(-)

-- 
2.5.5

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-06-17 12:11 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-16 16:56 [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 1/8] blockjob: move iostatus reset out of block_job_enter() Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 2/8] blockjob: rename block_job_is_paused() Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 3/8] blockjob: add pause points Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 4/8] blockjob: add block_job_get_aio_context() Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 5/8] block: use safe iteration over AioContext notifiers Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 6/8] blockjob: add AioContext attached callback Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 7/8] mirror: follow AioContext change gracefully Stefan Hajnoczi
2016-06-16 16:56 ` [Qemu-devel] [PATCH v5 8/8] backup: " Stefan Hajnoczi
2016-06-16 17:06 ` [Qemu-devel] [PATCH v5 0/8] blockjob: AioContext change support for mirror and backup Paolo Bonzini
2016-06-17 12:11 ` Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).