All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/19] block: Fix check_to_replace_node()
@ 2020-02-18 10:34 Max Reitz
  2020-02-18 10:34 ` [PATCH v4 01/19] blockdev: Allow external snapshots everywhere Max Reitz
                   ` (19 more replies)
  0 siblings, 20 replies; 24+ messages in thread
From: Max Reitz @ 2020-02-18 10:34 UTC (permalink / raw)
  To: qemu-block
  Cc: Kevin Wolf, Vladimir Sementsov-Ogievskiy, qemu-devel, Max Reitz

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



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

end of thread, other threads:[~2020-02-18 13:54 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-18 10:34 [PATCH v4 00/19] block: Fix check_to_replace_node() Max Reitz
2020-02-18 10:34 ` [PATCH v4 01/19] blockdev: Allow external snapshots everywhere Max Reitz
2020-02-18 10:34 ` [PATCH v4 02/19] blockdev: Allow resizing everywhere Max Reitz
2020-02-18 10:34 ` [PATCH v4 03/19] block: Drop bdrv_is_first_non_filter() Max Reitz
2020-02-18 10:34 ` [PATCH v4 04/19] iotests: Let 041 use -blockdev for quorum children Max Reitz
2020-02-18 10:34 ` [PATCH v4 05/19] quorum: Fix child permissions Max Reitz
2020-02-18 10:34 ` [PATCH v4 06/19] block: Add bdrv_recurse_can_replace() Max Reitz
2020-02-18 10:34 ` [PATCH v4 07/19] blkverify: Implement .bdrv_recurse_can_replace() Max Reitz
2020-02-18 10:34 ` [PATCH v4 08/19] quorum: " Max Reitz
2020-02-18 10:34 ` [PATCH v4 09/19] block: Use bdrv_recurse_can_replace() Max Reitz
2020-02-18 10:34 ` [PATCH v4 10/19] block: Remove bdrv_recurse_is_first_non_filter() Max Reitz
2020-02-18 10:34 ` [PATCH v4 11/19] mirror: Double-check immediately before replacing Max Reitz
2020-02-18 10:34 ` [PATCH v4 12/19] quorum: Stop marking it as a filter Max Reitz
2020-02-18 10:34 ` [PATCH v4 13/19] iotests: Use complete_and_wait() in 155 Max Reitz
2020-02-18 10:34 ` [PATCH v4 14/19] iotests: Add VM.assert_block_path() Max Reitz
2020-02-18 10:34 ` [PATCH v4 15/19] iotests/041: Drop superfluous shutdowns Max Reitz
2020-02-18 10:34 ` [PATCH v4 16/19] iotests: Resolve TODOs in 041 Max Reitz
2020-02-18 10:34 ` [PATCH v4 17/19] iotests: Use self.image_len in TestRepairQuorum Max Reitz
2020-02-18 10:34 ` [PATCH v4 18/19] iotests: Add tests for invalid Quorum @replaces Max Reitz
2020-02-18 12:38   ` Kevin Wolf
2020-02-18 12:49     ` Max Reitz
2020-02-18 13:29       ` Kevin Wolf
2020-02-18 10:34 ` [PATCH v4 19/19] iotests: Check that @replaces can replace filters Max Reitz
2020-02-18 13:53 ` [PATCH v4 00/19] block: Fix check_to_replace_node() Kevin Wolf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.