[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-5.0 v2 00/23] block: Fix check_to_replace_node()
From: |
Max Reitz |
Subject: |
[PATCH for-5.0 v2 00/23] block: Fix check_to_replace_node() |
Date: |
Mon, 11 Nov 2019 17:01:53 +0100 |
Based-on: <address@hidden>
(“iotests: Test failing mirror complete”)
(Because both add cases to 041.)
Hi,
For what this series does, see the cover letter of v1:
https://lists.nongnu.org/archive/html/qemu-block/2019-09/msg01027.html
Now, in v2 I’ve addressed Vladimir’s comments:
- Patch 5: Extend explanation in the commit message
- Patch 6: Prefer driver-specific .bdrv_recurse_can_replace()
implementation before the generic one for filters
- Patch 8: Some more s/BdrvChild \*/QuorumChild/
- Patch 15: Fix typo in the commit message
- Patch 17: Added
- Patch 18:
- Split @path into @root + @path
- In one instance, use x = next(y, z) instead of
try: x = next(y); except StopIteration: x = z;
- %s/'''/"""/
- Patch 19: Fallout from the patch 18 changes
- Patch 20: Fix in the commit message (uncommenting -> commenting out)
- Patch 21:
- Check full stderr message by inspecting the VM log
- Fallout from the patch 18 changes
- %s/'''/"""/
- Patch 22:
- Skip case if COR is unsupported
- Fallout from the patch 18 changes
- %s/'''/"""/
- Patch 23:
- Added more comments
- Skip cases if throttle/COR/quorum (as appropriate) is unsupported
- Use imgfmt instead of hard-coding qcow2
- Fallout from the patch 18 changes
- %s/'''/"""/
git-backport-diff against v1:
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/23:[----] [--] 'blockdev: Allow external snapshots everywhere'
002/23:[----] [--] 'blockdev: Allow resizing everywhere'
003/23:[----] [--] 'block: Drop bdrv_is_first_non_filter()'
004/23:[----] [--] 'iotests: Let 041 use -blockdev for quorum children'
005/23:[----] [--] 'quorum: Fix child permissions'
006/23:[0012] [FC] 'block: Add bdrv_recurse_can_replace()'
007/23:[----] [--] 'blkverify: Implement .bdrv_recurse_can_replace()'
008/23:[0006] [FC] 'quorum: Store children in own structure'
009/23:[----] [--] 'quorum: Add QuorumChild.to_be_replaced'
010/23:[----] [--] 'quorum: Implement .bdrv_recurse_can_replace()'
011/23:[----] [--] 'block: Use bdrv_recurse_can_replace()'
012/23:[----] [--] 'block: Remove bdrv_recurse_is_first_non_filter()'
013/23:[----] [--] 'mirror: Double-check immediately before replacing'
014/23:[----] [--] 'quorum: Stop marking it as a filter'
015/23:[----] [--] 'mirror: Prevent loops'
016/23:[----] [--] 'iotests: Use complete_and_wait() in 155'
017/23:[down] 'iotests: Use skip_if_unsupported decorator in 041'
018/23:[0037] [FC] 'iotests: Add VM.assert_block_path()'
019/23:[0004] [FC] 'iotests: Resolve TODOs in 041'
020/23:[----] [--] 'iotests: Use self.image_len in TestRepairQuorum'
021/23:[0027] [FC] 'iotests: Add tests for invalid Quorum @replaces'
022/23:[0007] [FC] 'iotests: Check that @replaces can replace filters'
023/23:[0141] [FC] 'iotests: Mirror must not attempt to create loops'
Max Reitz (23):
blockdev: Allow external snapshots everywhere
blockdev: Allow resizing everywhere
block: Drop bdrv_is_first_non_filter()
iotests: Let 041 use -blockdev for quorum children
quorum: Fix child permissions
block: Add bdrv_recurse_can_replace()
blkverify: Implement .bdrv_recurse_can_replace()
quorum: Store children in own structure
quorum: Add QuorumChild.to_be_replaced
quorum: Implement .bdrv_recurse_can_replace()
block: Use bdrv_recurse_can_replace()
block: Remove bdrv_recurse_is_first_non_filter()
mirror: Double-check immediately before replacing
quorum: Stop marking it as a filter
mirror: Prevent loops
iotests: Use complete_and_wait() in 155
iotests: Use skip_if_unsupported decorator in 041
iotests: Add VM.assert_block_path()
iotests: Resolve TODOs in 041
iotests: Use self.image_len in TestRepairQuorum
iotests: Add tests for invalid Quorum @replaces
iotests: Check that @replaces can replace filters
iotests: Mirror must not attempt to create loops
block.c | 115 ++++++----
block/blkverify.c | 20 +-
block/copy-on-read.c | 9 -
block/mirror.c | 31 ++-
block/quorum.c | 161 +++++++++++---
block/replication.c | 7 -
block/throttle.c | 8 -
blockdev.c | 58 ++++-
include/block/block.h | 5 -
include/block/block_int.h | 19 +-
tests/qemu-iotests/041 | 402 ++++++++++++++++++++++++++++++----
tests/qemu-iotests/041.out | 4 +-
tests/qemu-iotests/155 | 7 +-
tests/qemu-iotests/iotests.py | 59 +++++
14 files changed, 715 insertions(+), 190 deletions(-)
--
2.23.0
- [PATCH for-5.0 v2 00/23] block: Fix check_to_replace_node(),
Max Reitz <=
- [PATCH for-5.0 v2 01/23] blockdev: Allow external snapshots everywhere, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 02/23] blockdev: Allow resizing everywhere, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 03/23] block: Drop bdrv_is_first_non_filter(), Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 04/23] iotests: Let 041 use -blockdev for quorum children, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 05/23] quorum: Fix child permissions, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 06/23] block: Add bdrv_recurse_can_replace(), Max Reitz, 2019/11/11