52 lines
1.8 KiB
Diff
52 lines
1.8 KiB
Diff
|
|
From 801e9452bc80a38ee26fe12ba42356851acd6a9e Mon Sep 17 00:00:00 2001
|
||
|
|
From: John Snow <jsnow@redhat.com>
|
||
|
|
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 <jsnow@redhat.com>
|
||
|
|
Reviewed-by: Max Reitz <mreitz@redhat.com>
|
||
|
|
Message-id: 20190709232550.10724-19-jsnow@redhat.com
|
||
|
|
Signed-off-by: John Snow <jsnow@redhat.com>
|
||
|
|
---
|
||
|
|
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
|
||
|
|
|