On 27.07.26 15:05, Denis V. Lunev wrote:
On 7/16/26 13:22, Denis V. Lunev wrote:
This email originated from an IP that might not be authorized by the domain it 
was sent from.
Do not click links or open attachments unless it is an email you expected to 
receive.
qmp_block_dirty_bitmap_add() and the incoming-migration bitmap loader
both create a persistent bitmap with bdrv_create_dirty_bitmap(), which
always creates it writable, without checking whether the node can
actually be written to. A persistent bitmap added to an already
read-only or inactive node stays writable in memory on a node that
can never store it, and the next global inactivation (migration
completion, save, or any other bdrv_inactivate_all() caller) fails
trying to flush it back:

   Lost persistent bitmaps during inactivation of node '<node>': No write access
   migration_block_inactivate: bdrv_inactivate_all() failed: -22

Patch 1 rejects this at block-dirty-bitmap-add (and, wrapped in a
transaction, denies the whole transaction). Patch 2 closes the same
hole on the incoming-migration path. Patch 3 fixes a knock-on
regression from patch 1's approach: a bitmap that was rejected from
ever being written can still exist in memory read-only and must
remain removable without requiring write access.

v1 -> v2
* approach changed to deny rather than adopt (Vladimir)
* added patch to add permission check on migration path
* added patch to change permissions check on bitmap drop to more natural

Signed-off-by: Denis V. Lunev <[email protected]>
CC: Eric Blake <[email protected]>
CC: Vladimir Sementsov-Ogievskiy <[email protected]>
CC: John Snow <[email protected]>
CC: Andrey Drobyshev <[email protected]>

Denis V. Lunev (3):
   block/monitor: reject persistent bitmap add on a read-only node
   migration/block-dirty-bitmap: reject bitmap load onto ro node
   block/monitor: allow dropping a bitmap never stored on disk

  block/monitor/bitmap-qmp-cmds.c               | 19 +++++++----
  block/qcow2-bitmap.c                          |  9 +++++
  migration/block-dirty-bitmap.c                | 22 +++++++++----
  qapi/block-core.json                          |  4 ++-
  tests/qemu-iotests/tests/migrate-bitmaps-test | 33 +++++++++++++++++++
  .../tests/migrate-bitmaps-test.out            |  4 +--
  .../tests/remove-bitmap-from-backing          | 29 +++++++++++++++-
  .../tests/remove-bitmap-from-backing.out      | 22 ++++++++++++-
  8 files changed, 124 insertions(+), 18 deletions(-)

Hi, Vladimir!

Will this go through your tree? It is looking like nobody else cares.


Yes, seems so. Thanks, applied to my block branch.

There's still a chance to stop me within 2-3 weeks before 11.2 cycle opens.

--
Best regards,
Vladimir

Reply via email to