[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-5.0 v2 00/23] block: Fix check_to_replace_node()
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
Re: [PATCH for-5.0 v2 00/23] block: Fix check_to_replace_node() |
Date: |
Fri, 29 Nov 2019 12:24:23 +0000 |
3 last iotests patches don't apply now.. Do you have a branch pushed somewhere?
11.11.2019 19:01, Max Reitz wrote:
> 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(-)
>
--
Best regards,
Vladimir
- [PATCH for-5.0 v2 15/23] mirror: Prevent loops, (continued)
- [PATCH for-5.0 v2 15/23] mirror: Prevent loops, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 16/23] iotests: Use complete_and_wait() in 155, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 17/23] iotests: Use skip_if_unsupported decorator in 041, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 18/23] iotests: Add VM.assert_block_path(), Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 19/23] iotests: Resolve TODOs in 041, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 21/23] iotests: Add tests for invalid Quorum @replaces, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 22/23] iotests: Check that @replaces can replace filters, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 20/23] iotests: Use self.image_len in TestRepairQuorum, Max Reitz, 2019/11/11
- [PATCH for-5.0 v2 23/23] iotests: Mirror must not attempt to create loops, Max Reitz, 2019/11/11
- Re: [PATCH for-5.0 v2 00/23] block: Fix check_to_replace_node(),
Vladimir Sementsov-Ogievskiy <=