[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/4] qapi: add block-dirty-bitmap-enable/disable
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[Qemu-devel] [PATCH 2/4] qapi: add block-dirty-bitmap-enable/disable |
Date: |
Mon, 13 Nov 2017 19:20:51 +0300 |
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
qapi/block-core.json | 42 ++++++++++++++++++++++++++++++++++++++++++
blockdev.c | 42 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 84 insertions(+)
diff --git a/qapi/block-core.json b/qapi/block-core.json
index ab96e348e6..487744c16b 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -1672,6 +1672,48 @@
'data': 'BlockDirtyBitmap' }
##
+# @block-dirty-bitmap-enable:
+#
+# Enable dirty bitmap, so that it will continue tracking disk changes.
+#
+# Returns: nothing on success
+# If @node is not a valid block device, DeviceNotFound
+# If @name is not found, GenericError with an explanation
+#
+# Since: 2.12
+#
+# Example:
+#
+# -> { "execute": "block-dirty-bitmap-enable",
+# "arguments": { "node": "drive0", "name": "bitmap0" } }
+# <- { "return": {} }
+#
+##
+ { 'command': 'block-dirty-bitmap-enable',
+ 'data': 'BlockDirtyBitmap' }
+
+##
+# @block-dirty-bitmap-disable:
+#
+# Disable dirty bitmap, so that it will stop tracking disk changes.
+#
+# Returns: nothing on success
+# If @node is not a valid block device, DeviceNotFound
+# If @name is not found, GenericError with an explanation
+#
+# Since: 2.12
+#
+# Example:
+#
+# -> { "execute": "block-dirty-bitmap-disable",
+# "arguments": { "node": "drive0", "name": "bitmap0" } }
+# <- { "return": {} }
+#
+##
+ { 'command': 'block-dirty-bitmap-disable',
+ 'data': 'BlockDirtyBitmap' }
+
+##
# @BlockDirtyBitmapSha256:
#
# SHA256 hash of dirty bitmap data
diff --git a/blockdev.c b/blockdev.c
index 56a6b24a0b..fe1eb751f0 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -2827,6 +2827,48 @@ void qmp_block_dirty_bitmap_clear(const char *node,
const char *name,
bdrv_clear_dirty_bitmap(bitmap, NULL);
}
+void qmp_block_dirty_bitmap_enable(const char *node, const char *name,
+ Error **errp)
+{
+ BlockDriverState *bs;
+ BdrvDirtyBitmap *bitmap;
+
+ bitmap = block_dirty_bitmap_lookup(node, name, &bs, errp);
+ if (!bitmap || !bs) {
+ return;
+ }
+
+ if (bdrv_dirty_bitmap_frozen(bitmap)) {
+ error_setg(errp,
+ "Bitmap '%s' is currently frozen and cannot be enabled",
+ name);
+ return;
+ }
+
+ bdrv_enable_dirty_bitmap(bitmap);
+}
+
+void qmp_block_dirty_bitmap_disable(const char *node, const char *name,
+ Error **errp)
+{
+ BlockDriverState *bs;
+ BdrvDirtyBitmap *bitmap;
+
+ bitmap = block_dirty_bitmap_lookup(node, name, &bs, errp);
+ if (!bitmap || !bs) {
+ return;
+ }
+
+ if (bdrv_dirty_bitmap_frozen(bitmap)) {
+ error_setg(errp,
+ "Bitmap '%s' is currently frozen and cannot be disabled",
+ name);
+ return;
+ }
+
+ bdrv_disable_dirty_bitmap(bitmap);
+}
+
BlockDirtyBitmapSha256 *qmp_x_debug_block_dirty_bitmap_sha256(const char *node,
const char *name,
Error **errp)
--
2.11.1
- [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Vladimir Sementsov-Ogievskiy, 2017/11/13
- [Qemu-devel] [PATCH 1/4] block/dirty-bitmap: add lock to bdrv_enable/disable_dirty_bitmap, Vladimir Sementsov-Ogievskiy, 2017/11/13
- [Qemu-devel] [PATCH 3/4] qmp: transaction support for block-dirty-bitmap-enable/disable, Vladimir Sementsov-Ogievskiy, 2017/11/13
- [Qemu-devel] [PATCH 4/4] qapi: add block-dirty-bitmap-merge, Vladimir Sementsov-Ogievskiy, 2017/11/13
- [Qemu-devel] [PATCH 2/4] qapi: add block-dirty-bitmap-enable/disable,
Vladimir Sementsov-Ogievskiy <=
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, John Snow, 2017/11/15
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Vladimir Sementsov-Ogievskiy, 2017/11/16
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, John Snow, 2017/11/16
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Vladimir Sementsov-Ogievskiy, 2017/11/17
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, John Snow, 2017/11/17
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Kevin Wolf, 2017/11/21
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, John Snow, 2017/11/21
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Vladimir Sementsov-Ogievskiy, 2017/11/22
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Vladimir Sementsov-Ogievskiy, 2017/11/30
- Re: [Qemu-devel] [PATCH for-2.12 0/4] qmp dirty bitmap API, Denis V. Lunev, 2017/11/20