qemu-img: Add bitmap sub-command
commit3b51ab4bf0f49a01cc2db7b954e0669e081719b5
authorEric Blake <eblake@redhat.com>
Wed, 13 May 2020 01:16:45 +0000 (12 20:16 -0500)
committerEric Blake <eblake@redhat.com>
Tue, 19 May 2020 17:53:22 +0000 (19 12:53 -0500)
treee932eeb622b2e4c39ed7581daea7b6c8de2f1717
parentbb4e58c6137e80129b955789dd4b66c1504f20dc
qemu-img: Add bitmap sub-command

Include actions for --add, --remove, --clear, --enable, --disable, and
--merge (note that --clear is a bit of fluff, because the same can be
accomplished by removing a bitmap and then adding a new one in its
place, but it matches what QMP commands exist).  Listing is omitted,
because it does not require a bitmap name and because it was already
possible with 'qemu-img info'.  A single command line can play one or
more bitmap commands in sequence on the same bitmap name (although all
added bitmaps share the same granularity, and and all merged bitmaps
come from the same source file).  Merge defaults to other bitmaps in
the primary image, but can also be told to merge bitmaps from a
distinct image.

While this supports --image-opts for the file being modified, I did
not think it worth the extra complexity to support that for the source
file in a cross-file merges.  Likewise, I chose to have --merge only
take a single source rather than following the QMP support for
multiple merges in one go (although you can still use more than one
--merge in the command line); in part because qemu-img is offline and
therefore atomicity is not an issue.

Upcoming patches will add iotest coverage of these commands while
also testing other features.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20200513011648.166876-7-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
docs/tools/qemu-img.rst
qemu-img-cmds.hx
qemu-img.c