qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 00/10] block: Delay poll when ending drained sections
@ 2019-07-19  9:26 Max Reitz
  2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 01/10] block: Introduce BdrvChild.parent_quiesce_counter Max Reitz
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Max Reitz @ 2019-07-19  9:26 UTC (permalink / raw)
  To: qemu-block; +Cc: Kevin Wolf, qemu-devel, Stefan Hajnoczi, Max Reitz

Hi,

This series:

(1) Keeps patch 1, as the previous series, and

(2) Decides whether all *drained_end* functions should poll or not; as
    proposed by Kevin, all that should not poll now get a
    @drained_end_counter pointer, whose pointee they have to increment
    once for every background operation scheduled, and that background
    operation will decrement it once it settles.
    This allows functions that should poll to do so until the counter
    reaches 0, so they don’t have to poll after scheduling every single
    operation but can do so once in a place where it’s safe.

v3:
- Change the design as described above (drained_end_counter instead of a
  list of BdrvCoDrainData objects to poll)
- Added a test to test-bdrv-drain


git-backport-diff against v2:

Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively

001/10:[----] [--] 'block: Introduce BdrvChild.parent_quiesce_counter'
002/10:[down] 'tests: Add job commit by drained_end test'
003/10:[down] 'block: Add @drained_end_counter to bdrv_drain_invoke()'
004/10:[down] 'block: Make bdrv_parent_drained_[^_]*() static'
005/10:[down] 'tests: Lock AioContexts in test-block-iothread'
006/10:[down] 'block: Only poll once in bdrv_drained_end()'
007/10:[down] 'tests: Extend commit by drained_end test'
008/10:[down] 'block: Loop unsafely in bdrv*drained_end()'
009/10:[----] [--] 'iotests: Add @has_quit to vm.shutdown()'
010/10:[----] [--] 'iotests: Test commit with a filter on the chain'


Max Reitz (10):
  block: Introduce BdrvChild.parent_quiesce_counter
  tests: Add job commit by drained_end test
  block: Add @drained_end_counter
  block: Make bdrv_parent_drained_[^_]*() static
  tests: Lock AioContexts in test-block-iothread
  block: Do not poll in bdrv_do_drained_end()
  tests: Extend commit by drained_end test
  block: Loop unsafely in bdrv*drained_end()
  iotests: Add @has_quit to vm.shutdown()
  iotests: Test commit with a filter on the chain

 include/block/block.h       |  42 +++++++----
 include/block/block_int.h   |  15 +++-
 block.c                     |  52 ++++++++-----
 block/block-backend.c       |   6 +-
 block/io.c                  | 134 +++++++++++++++++++++++---------
 blockjob.c                  |   2 +-
 tests/test-bdrv-drain.c     | 147 ++++++++++++++++++++++++++++++++++++
 tests/test-block-iothread.c |  40 ++++++----
 python/qemu/machine.py      |   5 +-
 tests/qemu-iotests/040      |  40 +++++++++-
 tests/qemu-iotests/040.out  |   4 +-
 tests/qemu-iotests/255      |   2 +-
 12 files changed, 397 insertions(+), 92 deletions(-)

-- 
2.21.0



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

end of thread, other threads:[~2019-07-19 13:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-19  9:26 [Qemu-devel] [PATCH v3 00/10] block: Delay poll when ending drained sections Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 01/10] block: Introduce BdrvChild.parent_quiesce_counter Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 02/10] tests: Add job commit by drained_end test Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 03/10] block: Add @drained_end_counter Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 04/10] block: Make bdrv_parent_drained_[^_]*() static Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 05/10] tests: Lock AioContexts in test-block-iothread Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 06/10] block: Do not poll in bdrv_do_drained_end() Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 07/10] tests: Extend commit by drained_end test Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 08/10] block: Loop unsafely in bdrv*drained_end() Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 09/10] iotests: Add @has_quit to vm.shutdown() Max Reitz
2019-07-19  9:26 ` [Qemu-devel] [PATCH v3 10/10] iotests: Test commit with a filter on the chain Max Reitz
2019-07-19 13:16 ` [Qemu-devel] [PATCH v3 00/10] block: Delay poll when ending drained sections Kevin Wolf

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