[PATCH v7 00/25] parallels: Add full dirty bitmap support

Denis V. Lunev posted 25 patches 3 weeks, 2 days ago
Failed in applying to current master (apply log)
block/parallels-ext.c                         | 437 +++++++++++++++-
block/parallels.c                             | 455 +++++++++++------
block/parallels.h                             |  23 +-
qapi/block-core.json                          |  46 +-
tests/qemu-iotests/165                        |  18 +-
tests/qemu-iotests/256                        |   2 +-
tests/qemu-iotests/299                        |   2 +-
tests/qemu-iotests/304                        |   2 +-
tests/qemu-iotests/tests/block-status-cache   |   2 +-
tests/qemu-iotests/tests/image-fleecing       |  14 +-
tests/qemu-iotests/tests/inactive-node-nbd    |  14 +
.../qemu-iotests/tests/inactive-node-nbd.out  |   8 +
tests/qemu-iotests/tests/parallels-bitmap     | 475 ++++++++++++++++++
tests/qemu-iotests/tests/parallels-bitmap.out | 106 ++++
tests/qemu-iotests/tests/parallels-checks     | 235 +++++++++
tests/qemu-iotests/tests/parallels-checks.out | 193 +++++++
.../qemu-iotests/tests/parallels-read-bitmap  | 231 ---------
.../tests/parallels-read-bitmap.out           |  39 --
18 files changed, 1848 insertions(+), 454 deletions(-)
create mode 100755 tests/qemu-iotests/tests/parallels-bitmap
create mode 100644 tests/qemu-iotests/tests/parallels-bitmap.out
delete mode 100755 tests/qemu-iotests/tests/parallels-read-bitmap
delete mode 100644 tests/qemu-iotests/tests/parallels-read-bitmap.out
[PATCH v7 00/25] parallels: Add full dirty bitmap support
Posted by Denis V. Lunev 3 weeks, 2 days ago
Parallels format driver:
* make some preparation
* add dirty bitmap saving
* make dirty bitmap RW
* fix broken checks
* refactor leak check
* add parallels format support to several tests

Alexander left the team, so this comes from me. v6 was:

https://lore.kernel.org/qemu-devel/20260817185942.1065143-1-den@openvz.org/

and v5, his last one, was:

https://lore.kernel.org/qemu-devel/20240311181850.73013-1-alexander.ivanov@virtuozzo.com/

It does not apply to master on its own. It goes on top of "[PATCH 0/8]
parallels: fix Format Extension parsing":

https://lore.kernel.org/qemu-devel/20260811173857.396571-1-den@openvz.org/

whose patch 3 is merged as dc04053687 ("dirty-bitmap: fix integer
overflow in serialization coverage"). The other seven are unchanged and
still apply, so they are not resent. Together they sit on master at
a925240509 ("Merge tag 'block-pull-request' of
https://gitlab.com/stefanha/qemu into staging").

v7:
Rebased on master, which brought require_hmp=True into 15, 24 and 25.
12: Renamed a module scope variable which the test functions shadow.
17: Moved the read-only open case to 19, where the output it looks at
    exists for the first time. It could not pass here.
19: Reordered the QAPI additions and gave ImageInfoSpecificKind its
    @parallels line, both on Markus' review. Report a bitmap which
    can not be used as inconsistent, and cover that.
21, 22: Renamed the module scope variables which the test functions
    shadow, so that iotest 297 passes at every patch of the series.

v6:
Reworked, so the numbers have shifted.
2: Made it .bdrv_inactivate and armed the in use flag on activation.
3: New patch, inactivating a read-only node.
5: cluster_end is uint64_t.
6: Absorbed the mark_unused helper, fixed the used bitmap growth.
7: New patch, the check no longer dies on what it is meant to report.
9: Absorbed the three parallels_check_leak() patches and the truncation.
10: Dropped the redundant bdrv_pwrite_zeroes() of the reuse branch.
11: Refuse a bitmap which does not fit, report a lost one, added ext_end.
12: Absorbed "Make a loaded dirty bitmap persistent", drop a broken one.
13: Bound the search by the region rather than by the cluster.
14: New patch, the Format Extension against the leak check.
15: Skipped test_reopen_rw, the bitmap name is a UUID.
16: New patch, a bitmap L1 entry has to point inside the data area.
17: Mark the bitmaps inconsistent instead of skipping the load.
18: New patch, block-dirty-bitmap-remove reaches the image.
19: New patch, qemu-img info reports the bitmaps.
20: New patch, renames parallels-read-bitmap to parallels-bitmap.
21: New patch, covers storing a bitmap.
22: New patch, covers the qemu-img bitmap sub-commands.
23: New patch, covers a broken Format Extension and a combined repair.
25: Added a comment about the bitmap name.
Dropped "Preserve extensions cluster for non-transient extensions" and
"Reverse a conditional in parallels_check_leak()".

Signed-off-by: Denis V. Lunev <den@openvz.org>
Cc: Stefan Hajnoczi <stefanha@redhat.com>

Alexander Ivanov (4):
  parallels: Set s->used_bmap to NULL in parallels_free_used_bitmap()
  parallels: Make mark_used() a global function
  parallels: Create used bitmap even if checks needed
  tests: Turned on 256, 299, 304 and block-status-cache for parallels
    format

Denis V. Lunev (21):
  parallels: split inactivation out and add the activation counterpart
  iotests: cover inactivating a read-only node
  parallels: Limit search in parallels_mark_used to the last marked
    cluster
  parallels: Move host clusters allocation to a separate function
  parallels: do not let the check die on what it is meant to report
  parallels: Drop unused clusters at the end of the image
  parallels: Remove unnecessary data_end field
  parallels: Add dirty bitmaps saving
  parallels: Let image extensions work in RW mode
  parallels: Handle L1 entries equal to one
  iotests: cover the Format Extension against the leak check
  iotests: run the persistent dirty bitmap test on parallels
  parallels: reject a bitmap L1 entry outside the data area
  parallels: do not trust the bitmaps of an image which was not closed
  parallels: implement removing a stored dirty bitmap
  parallels: report the stored dirty bitmaps in qemu-img info
  iotests: rename parallels-read-bitmap to parallels-bitmap
  iotests: cover storing a parallels dirty bitmap
  iotests: cover the qemu-img bitmap operations on parallels
  iotests: cover a broken Format Extension and a combined repair
  tests: Add parallels format support to image-fleecing

 block/parallels-ext.c                         | 437 +++++++++++++++-
 block/parallels.c                             | 455 +++++++++++------
 block/parallels.h                             |  23 +-
 qapi/block-core.json                          |  46 +-
 tests/qemu-iotests/165                        |  18 +-
 tests/qemu-iotests/256                        |   2 +-
 tests/qemu-iotests/299                        |   2 +-
 tests/qemu-iotests/304                        |   2 +-
 tests/qemu-iotests/tests/block-status-cache   |   2 +-
 tests/qemu-iotests/tests/image-fleecing       |  14 +-
 tests/qemu-iotests/tests/inactive-node-nbd    |  14 +
 .../qemu-iotests/tests/inactive-node-nbd.out  |   8 +
 tests/qemu-iotests/tests/parallels-bitmap     | 475 ++++++++++++++++++
 tests/qemu-iotests/tests/parallels-bitmap.out | 106 ++++
 tests/qemu-iotests/tests/parallels-checks     | 235 +++++++++
 tests/qemu-iotests/tests/parallels-checks.out | 193 +++++++
 .../qemu-iotests/tests/parallels-read-bitmap  | 231 ---------
 .../tests/parallels-read-bitmap.out           |  39 --
 18 files changed, 1848 insertions(+), 454 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/parallels-bitmap
 create mode 100644 tests/qemu-iotests/tests/parallels-bitmap.out
 delete mode 100755 tests/qemu-iotests/tests/parallels-read-bitmap
 delete mode 100644 tests/qemu-iotests/tests/parallels-read-bitmap.out

-- 
2.53.0