[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v3 00/10] block: Delay poll when ending drained sect
From: |
Max Reitz |
Subject: |
[Qemu-block] [PATCH v3 00/10] block: Delay poll when ending drained sections |
Date: |
Fri, 19 Jul 2019 11:26:08 +0200 |
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
- [Qemu-block] [PATCH v3 00/10] block: Delay poll when ending drained sections,
Max Reitz <=
- [Qemu-block] [PATCH v3 01/10] block: Introduce BdrvChild.parent_quiesce_counter, Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 02/10] tests: Add job commit by drained_end test, Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 03/10] block: Add @drained_end_counter, Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 04/10] block: Make bdrv_parent_drained_[^_]*() static, Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 05/10] tests: Lock AioContexts in test-block-iothread, Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 06/10] block: Do not poll in bdrv_do_drained_end(), Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 07/10] tests: Extend commit by drained_end test, Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 08/10] block: Loop unsafely in bdrv*drained_end(), Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 09/10] iotests: Add @has_quit to vm.shutdown(), Max Reitz, 2019/07/19
- [Qemu-block] [PATCH v3 10/10] iotests: Test commit with a filter on the chain, Max Reitz, 2019/07/19