On 3/5/19 6:43 PM, John Snow wrote:
++ This series relies on [Qemu-devel] [PATCH v3 0/7] bitmaps: add
inconsistent bit, you can apply it on top of those patches, or you can
use my github staging branch as a basis:
https://github.com/jnsnow/qemu/tree/bitmaps
> This series aims to enable block resizes when persistent bitmaps are
> in use. The basic approach here is to recognize that we now load all
> persistent bitmaps in memory, and so we can rely on in-memory resizes
> and then flush the changed metadata back to disk.
>
> One part that is potentially now quite strange is that bitmap resizes
> may happen twice: once during the qcow2 resize event only if persistent
> bitmaps are found, and then again as part of the generic resize callback
> event whether or not we have any persistent bitmaps.
>
> The second round is required if we are not using qcow2 or we have only
> transient bitmaps. The first round is required as we wish to flush the
> bitmaps back to disk atomically with the qcow2 resize to avoid violating
> our invariants for the bitmap metadata which is checked in many places.
>
> This is harmless; hbitmap_truncate will recognize the second round as
> a no-op.
>
> John Snow (5):
> block/qcow2-bitmap: Skip length check in some cases
> block/qcow2-bitmap: Allow bitmap flushing
> block/qcow2-bitmap: don't remove bitmaps on reopen
> block/qcow2-bitmap: Allow resizes with persistent bitmaps
> tests/qemu-iotests: add bitmap resize test 246
>
> block/qcow2.h | 2 +
> block/qcow2-bitmap.c | 123 +++++++++++----
> block/qcow2.c | 27 +++-
> tests/qemu-iotests/246 | 114 ++++++++++++++
> tests/qemu-iotests/246.out | 296 +++++++++++++++++++++++++++++++++++++
> tests/qemu-iotests/group | 1 +
> 6 files changed, 528 insertions(+), 35 deletions(-)
> create mode 100755 tests/qemu-iotests/246
> create mode 100644 tests/qemu-iotests/246.out
>