Allow QEMU to read in bitmaps that have the in-use bit set, for the purposes of allowing users to delete those bitmaps.
This is chosen in preference to a hard error on load to minimize impact for a non-critical error, but to force the user or management utility to acknowledge that the bitmap is no longer viable. 1. Changed wording of meaning of persistent bit, inconsistent bit Declining to optimize to avoid allocations for this revision. 2. Add Reviewed-by from Eric. 3. Split into several patches that are more single-purpose, which highlights the individual fixes more clearly; - Prohibit BUSY or INCONSISTENT bitmaps from being merge sources. 4. Declining feedback to prohibit disabling or enabling readonly bitmaps, on the basis that users may wish to enable/disable them prior to remounting their backing storage RW. Decided to prohibit attempting to remove readonly bitmaps, so the failure happens earlier. Prohibit sync=incremental backups using readonly bitmaps, because they're not capable of clearing the bitmap on success. sync=differential would be acceptable here. (Good spot, Vladimir.) John Snow (7): block/dirty-bitmaps: add inconsistent bit block/dirty-bitmap: add inconsistent status block/dirty-bitmaps: add block_dirty_bitmap_check function block/dirty-bitmaps: prohibit readonly bitmaps for backups block/dirty-bitmaps: prohibit removing readonly bitmaps block/dirty-bitmaps: disallow busy bitmaps as merge source block/dirty-bitmaps: implement inconsistent bit qapi/block-core.json | 20 +++++-- include/block/dirty-bitmap.h | 15 ++++- block/dirty-bitmap.c | 63 +++++++++++++++++--- block/qcow2-bitmap.c | 103 +++++++++++++++++---------------- blockdev.c | 50 ++++------------ migration/block-dirty-bitmap.c | 12 +--- nbd/server.c | 3 +- 7 files changed, 151 insertions(+), 115 deletions(-) -- 2.17.2