This is largely the same series that Vladimir sent in January, but at the time I was unsure of if we'd want these commands or not in QEMU.
After discussing with Virtuozzo their plans for a checkpoint-like API implemented primarily in libvirt, I agree that these commands are at least tentatively useful. Eric Blake is currently writing a counter-proposal and demo API to show to Virtuozzo on libvirt's development list. Check in these QMP commands with the experimental prefix 'x-' for now so that it can be used for prototyping. Once the design for the libvirt API looks reasonably final I will remove the 'x-' prefixes, or, if we wind up not using these particular commands I will delete them entirely. v3: - Drop patch one (already merged) - Minor phrasing adjustments to documentation - Removed &state->bs argument to bitmap lookup for enable/disable - Added x- prefix to all three commands and to add's new argument. Vladimir's original cover letter is below: There are three qmp commands, needed to implement external backup API. Using these three commands, client may do all needed bitmap management by hand: on backup start we need to do a transaction: {disable old bitmap, create new bitmap} on backup success: drop old bitmap on backup fail: enable old bitmap merge new bitmap to old bitmap drop new bitmap John Snow (1): qapi: add x-block-dirty-bitmap-enable/disable Vladimir Sementsov-Ogievskiy (4): block/dirty-bitmap: add lock to bdrv_enable/disable_dirty_bitmap qmp: transaction support for x-block-dirty-bitmap-enable/disable qapi: add x-block-dirty-bitmap-merge qapi: add disabled parameter to block-dirty-bitmap-add block/dirty-bitmap.c | 24 ++++++- blockdev.c | 163 ++++++++++++++++++++++++++++++++++++++++++- include/block/dirty-bitmap.h | 3 +- qapi/block-core.json | 86 ++++++++++++++++++++++- qapi/transaction.json | 4 ++ 5 files changed, 275 insertions(+), 5 deletions(-) -- 2.14.3