On 6/3/19 8:00 AM, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
>
> Here is block-dirty-bitmap-remove transaction action.
>
> It is used to do transactional movement of the bitmap (which is
> possible in conjunction with merge command). Transactional bitmap
> movement is needed in scenarios with external snapshot, when we don't
> want to leave copy of the bitmap in the base image.
>
Oh, interesting. I see why you want this now. OK, let's do it.
> Implementation itself in 03, in short:
>
> .prepare: make bitmap unnamed and non-persistent, delete stored version
> of the bitmap from the image
>
> .commit: release bitmap
>
> .abort: restore bitmap name and persistence. We don't restore bitmap
> version in the image. It's not critical, we have in-RAM version,
> it will be stored on shutdown
>
> Vladimir Sementsov-Ogievskiy (4):
> blockdev: reduce aio_context locked sections in bitmap add/remove
> block/dirty-bitmap: add hide/unhide API
> qapi: implement block-dirty-bitmap-remove transaction action
> iotests: test bitmap moving inside 254
>
> qapi/transaction.json | 2 +
> include/block/dirty-bitmap.h | 2 +
> block/dirty-bitmap.c | 26 +++++++++
> blockdev.c | 100 +++++++++++++++++++++++++++--------
> tests/qemu-iotests/254 | 30 ++++++++++-
> tests/qemu-iotests/254.out | 82 ++++++++++++++++++++++++++++
> 6 files changed, 219 insertions(+), 23 deletions(-)
>