qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH RFC v2 3/5] qmp: expose block-dirty-bitmap-populate


From: Eric Blake
Subject: Re: [PATCH RFC v2 3/5] qmp: expose block-dirty-bitmap-populate
Date: Mon, 18 May 2020 16:10:25 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

On 5/13/20 10:49 PM, John Snow wrote:
This is a new job-creating command.

Signed-off-by: John Snow <address@hidden>
---
  qapi/block-core.json  | 18 +++++++++++
  qapi/transaction.json |  2 ++
  blockdev.c            | 74 +++++++++++++++++++++++++++++++++++++++++++
  3 files changed, 94 insertions(+)

diff --git a/qapi/block-core.json b/qapi/block-core.json
index 0fb527a9a1..f7cae77fc9 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -2250,6 +2250,24 @@
              '*auto-finalize': 'bool',
              '*auto-dismiss': 'bool' } }
+##
+# @block-dirty-bitmap-populate:
+#
+# Creates a new job that writes a pattern into a dirty bitmap.
+#
+# Since: 5.0

5.1

+++ b/qapi/transaction.json
@@ -50,6 +50,7 @@
  # - @block-dirty-bitmap-enable: since 4.0
  # - @block-dirty-bitmap-disable: since 4.0
  # - @block-dirty-bitmap-merge: since 4.0
+# - @block-dirty-bitmap-populate: since 5.0

ditto


+++ b/blockdev.c
@@ -2233,6 +2233,63 @@ static void 
block_dirty_bitmap_remove_commit(BlkActionState *common)
      bdrv_release_dirty_bitmap(state->bitmap);
  }
+static void block_dirty_bitmap_populate_prepare(BlkActionState *common,
+                                                Error **errp)
+{
+    BlockJobActionState *state = DO_UPCAST(BlockJobActionState, common, 
common);
+    BlockDirtyBitmapPopulate *bitpop;
+    BlockDriverState *bs;
+    AioContext *aio_context;
+    BdrvDirtyBitmap *bmap = NULL;
+    int job_flags = JOB_DEFAULT;
+
+    assert(common->action->type == \
+           TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_POPULATE);

\ is not necessary here.

+    bitpop = common->action->u.block_dirty_bitmap_populate.data;
+
+    bmap = block_dirty_bitmap_lookup(bitpop->node, bitpop->name, &bs, errp);
+    if (!bmap) {
+        return;
+    }

So the bitmap has to already exist, and we are just merging into it, correct?

Otherwise looks good.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




reply via email to

[Prev in Thread] Current Thread [Next in Thread]