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 v6 comes from me. v5 was:
https://lore.kernel.org/qemu-devel/20240311181850.73013-1-alexander.ivanov@virtuozzo.com/
It does not apply to master, it goes on top of "[PATCH 0/8] parallels:
fix Format Extension parsing", which applies to commit 3e3ccab106f8
("Update version for v11.1.0-rc3 release"):
https://lore.kernel.org/qemu-devel/20260811173857.396571-1-den@openvz.org/
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 | 433 +++++++++++++++-
block/parallels.c | 455 +++++++++++------
block/parallels.h | 23 +-
qapi/block-core.json | 40 +-
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 | 471 ++++++++++++++++++
tests/qemu-iotests/tests/parallels-bitmap.out | 106 ++++
tests/qemu-iotests/tests/parallels-checks | 236 +++++++++
tests/qemu-iotests/tests/parallels-checks.out | 185 +++++++
.../qemu-iotests/tests/parallels-read-bitmap | 231 ---------
.../tests/parallels-read-bitmap.out | 39 --
18 files changed, 1827 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