diff --git a/block-backup-loosen-restriction-on-readonly-bitmaps.patch b/block-backup-loosen-restriction-on-readonly-bitmaps.patch new file mode 100644 index 0000000..ab0617c --- /dev/null +++ b/block-backup-loosen-restriction-on-readonly-bitmaps.patch @@ -0,0 +1,51 @@ +From 801e9452bc80a38ee26fe12ba42356851acd6a9e Mon Sep 17 00:00:00 2001 +From: John Snow +Date: Mon, 29 Jul 2019 16:35:54 -0400 +Subject: [PATCH] block/backup: loosen restriction on readonly bitmaps + +With the "never" sync policy, we actually can utilize readonly bitmaps +now. Loosen the check at the QMP level, and tighten it based on +provided arguments down at the job creation level instead. + +Signed-off-by: John Snow +Reviewed-by: Max Reitz +Message-id: 20190709232550.10724-19-jsnow@redhat.com +Signed-off-by: John Snow +--- + block/backup.c | 6 ++++++ + blockdev.c | 2 +- + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/block/backup.c b/block/backup.c +index 84a56337ac..59ac2c0396 100644 +--- a/block/backup.c ++++ b/block/backup.c +@@ -606,6 +606,12 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs, + return NULL; + } + ++ /* If we need to write to this bitmap, check that we can: */ ++ if (bitmap_mode != BITMAP_SYNC_MODE_NEVER && ++ bdrv_dirty_bitmap_check(sync_bitmap, BDRV_BITMAP_DEFAULT, errp)) { ++ return NULL; ++ } ++ + /* Create a new bitmap, and freeze/disable this one. */ + if (bdrv_dirty_bitmap_create_successor(bs, sync_bitmap, errp) < 0) { + return NULL; +diff --git a/blockdev.c b/blockdev.c +index 34c8b651e1..efb69d343a 100644 +--- a/blockdev.c ++++ b/blockdev.c +@@ -3533,7 +3533,7 @@ static BlockJob *do_backup_common(BackupCommon *backup, + "when providing a bitmap"); + return NULL; + } +- if (bdrv_dirty_bitmap_check(bmap, BDRV_BITMAP_DEFAULT, errp)) { ++ if (bdrv_dirty_bitmap_check(bmap, BDRV_BITMAP_ALLOW_RO, errp)) { + return NULL; + } + } +-- +2.27.0 +