[PULL 00/29] parallels: persistent dirty bitmaps and Format Extension hardening

Denis V. Lunev posted 29 patches 2 weeks, 1 day ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260910234222.3039975-1-den@openvz.org
Maintainers: Stefan Hajnoczi <stefanha@redhat.com>, "Denis V. Lunev" <den@openvz.org>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Eric Blake <eblake@redhat.com>, Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
block/parallels-ext.c                              | 457 ++++++++++++++++++++-
block/parallels.c                                  | 432 ++++++++++++-------
block/parallels.h                                  |  20 +-
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 +
tests/qemu-iotests/tests/inactive-node-nbd.out     |   8 +
tests/qemu-iotests/tests/parallels-bitmap          | 260 ++++++++++++
tests/qemu-iotests/tests/parallels-bitmap.out      |  49 +++
tests/qemu-iotests/tests/parallels-checks          | 229 +++++++++++
tests/qemu-iotests/tests/parallels-checks.out      | 174 ++++++++
tests/qemu-iotests/tests/parallels-read-bitmap     |  53 ---
tests/qemu-iotests/tests/parallels-read-bitmap.out |   6 -
17 files changed, 1498 insertions(+), 244 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
[PULL 00/29] parallels: persistent dirty bitmaps and Format Extension hardening
Posted by Denis V. Lunev 2 weeks, 1 day ago
The following changes since commit 257bf4f160c50ca8c4ebd603f519f5c786013fb7:

  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2026-09-10 11:08:04 +0100)

are available in the Git repository at:

  https://gitlab.com/dlunev/qemu.git tags/pull-parallels-2026-09-11

for you to fetch changes up to 94336eedb1c98792d595f729c7a284e9e91e6158:

  tests: Add parallels format support to image-fleecing (2026-09-11 00:54:38 +0200)

----------------------------------------------------------------
parallels patches

- harden the Format Extension parser against a crafted image
- add persistent dirty bitmap support: store, remove and report them
- let image extensions be updated in read-write mode
- make qemu-img check report the damage it is meant to report
  instead of dying on it
- drop the unused clusters at the end of the image
- cover the new behaviour in the parallels iotests, and run more of
  the generic ones on parallels

Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>

----------------------------------------------------------------
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 (25):
      parallels: fix out-of-bounds read in format extension parsing
      parallels: validate dirty bitmap granularity
      parallels: bound the bitmap L1 table against the bitmap size
      parallels: reject a Format Extension outside the image file
      parallels: allocate the Format Extension cluster gracefully
      parallels: fix GSList leak on the format extension success path
      iotests: cover the Parallels format extension parser
      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
      iotests: rename parallels-read-bitmap to parallels-bitmap
      iotests: cover a broken Format Extension and a combined repair
      tests: Add parallels format support to image-fleecing

 block/parallels-ext.c                              | 457 ++++++++++++++++++++-
 block/parallels.c                                  | 432 ++++++++++++-------
 block/parallels.h                                  |  20 +-
 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 +
 tests/qemu-iotests/tests/inactive-node-nbd.out     |   8 +
 tests/qemu-iotests/tests/parallels-bitmap          | 260 ++++++++++++
 tests/qemu-iotests/tests/parallels-bitmap.out      |  49 +++
 tests/qemu-iotests/tests/parallels-checks          | 229 +++++++++++
 tests/qemu-iotests/tests/parallels-checks.out      | 174 ++++++++
 tests/qemu-iotests/tests/parallels-read-bitmap     |  53 ---
 tests/qemu-iotests/tests/parallels-read-bitmap.out |   6 -
 17 files changed, 1498 insertions(+), 244 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
Re: [PULL 00/29] parallels: persistent dirty bitmaps and Format Extension hardening
Posted by Richard Henderson 2 weeks, 1 day ago
On 9/10/26 13:41, Denis V. Lunev wrote:
> The following changes since commit 257bf4f160c50ca8c4ebd603f519f5c786013fb7:
> 
>    Merge tag 'for-upstream' ofhttps://gitlab.com/bonzini/qemu into staging (2026-09-10 11:08:04 +0100)
> 
> are available in the Git repository at:
> 
>    https://gitlab.com/dlunev/qemu.git tags/pull-parallels-2026-09-11
> 
> for you to fetch changes up to 94336eedb1c98792d595f729c7a284e9e91e6158:
> 
>    tests: Add parallels format support to image-fleecing (2026-09-11 00:54:38 +0200)
> 
> ----------------------------------------------------------------
> parallels patches
> 
> - harden the Format Extension parser against a crafted image
> - add persistent dirty bitmap support: store, remove and report them
> - let image extensions be updated in read-write mode
> - make qemu-img check report the damage it is meant to report
>    instead of dying on it
> - drop the unused clusters at the end of the image
> - cover the new behaviour in the parallels iotests, and run more of
>    the generic ones on parallels

Applied, thanks.

r~