qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v4 00/19] block: Fix check_to_replace_node()


From: Max Reitz
Subject: [PATCH v4 00/19] block: Fix check_to_replace_node()
Date: Tue, 18 Feb 2020 11:34:35 +0100

Branch: https://github.com/XanClic/qemu.git fix-can-replace-v4
Branch: https://git.xanclic.moe/XanClic/qemu.git fix-can-replace-v4

v1: https://lists.nongnu.org/archive/html/qemu-block/2019-09/msg01027.html
v2: https://lists.nongnu.org/archive/html/qemu-block/2019-11/msg00370.html
v3: https://lists.nongnu.org/archive/html/qemu-block/2020-01/msg00922.html


Hi,

For what this series does, see the cover letter of v1 (linked above).


Changes in v4 compared to v3:
- Following the discussion with Kevin, I changed Quorum’s
  .bdrv_recurse_can_replace() implementation from unsharing the
  CONSISTENT_READ permission and taking the WRITE permission to just
  checking whether there are any other parents
  - This made the old patches 8 and 9 unnecessary, so they’ve been
    dropped
  - And of course it requires some changes to patch 10 (now 8)
  - (Patch 10 (was: 12) gets a rebase conflict that’s obvious to
    resolve, so I kept Vladimir’s R-b)

- As suggested by Vladimir, I added the root node name to the
  cannot-follow-path error message in patch 14 (was: 16), and added an
  assertion that the root node exists in the first place


git-backport-diff against v3:

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/19:[----] [--] 'blockdev: Allow external snapshots everywhere'
002/19:[----] [--] 'blockdev: Allow resizing everywhere'
003/19:[----] [--] 'block: Drop bdrv_is_first_non_filter()'
004/19:[----] [--] 'iotests: Let 041 use -blockdev for quorum children'
005/19:[----] [--] 'quorum: Fix child permissions'
006/19:[----] [--] 'block: Add bdrv_recurse_can_replace()'
007/19:[----] [--] 'blkverify: Implement .bdrv_recurse_can_replace()'
008/19:[0019] [FC] 'quorum: Implement .bdrv_recurse_can_replace()'
009/19:[----] [--] 'block: Use bdrv_recurse_can_replace()'
010/19:[0002] [FC] 'block: Remove bdrv_recurse_is_first_non_filter()'
011/19:[----] [--] 'mirror: Double-check immediately before replacing'
012/19:[----] [--] 'quorum: Stop marking it as a filter'
013/19:[----] [--] 'iotests: Use complete_and_wait() in 155'
014/19:[0005] [FC] 'iotests: Add VM.assert_block_path()'
015/19:[----] [--] 'iotests/041: Drop superfluous shutdowns'
016/19:[----] [--] 'iotests: Resolve TODOs in 041'
017/19:[----] [--] 'iotests: Use self.image_len in TestRepairQuorum'
018/19:[----] [--] 'iotests: Add tests for invalid Quorum @replaces'
019/19:[----] [--] 'iotests: Check that @replaces can replace filters'


Max Reitz (19):
  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: 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
  iotests: Use complete_and_wait() in 155
  iotests: Add VM.assert_block_path()
  iotests/041: Drop superfluous shutdowns
  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

 block.c                       |  85 ++++++++++-----------
 block/blkverify.c             |  20 ++---
 block/copy-on-read.c          |   9 ---
 block/filter-compress.c       |   9 ---
 block/mirror.c                |  14 +++-
 block/quorum.c                |  70 ++++++++++++++---
 block/replication.c           |   7 --
 block/throttle.c              |   8 --
 blockdev.c                    |  10 ---
 include/block/block.h         |   5 --
 include/block/block_int.h     |  16 ++--
 tests/qemu-iotests/041        | 138 +++++++++++++++++++++++++++++-----
 tests/qemu-iotests/041.out    |   4 +-
 tests/qemu-iotests/155        |   7 +-
 tests/qemu-iotests/iotests.py |  59 +++++++++++++++
 15 files changed, 315 insertions(+), 146 deletions(-)

-- 
2.24.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]