From: Fiona Ebner <f.ebner@proxmox.com>
To: qemu-devel@nongnu.org
Cc: qemu-block@nongnu.org, armbru@redhat.com, eblake@redhat.com,
hreitz@redhat.com, kwolf@redhat.com, vsementsov@yandex-team.ru,
jsnow@redhat.com, den@virtuozzo.com, t.lamprecht@proxmox.com,
alexander.ivanov@virtuozzo.com
Subject: [PATCH 7/9] mirror: return mirror-specific information upon query
Date: Fri, 24 Feb 2023 15:48:23 +0100 [thread overview]
Message-ID: <20230224144825.466375-8-f.ebner@proxmox.com> (raw)
In-Reply-To: <20230224144825.466375-1-f.ebner@proxmox.com>
To start out, only actively-synced is returned.
For example, this is useful for jobs that started out in background
mode and switched to active mode. Once actively-synced is true, it's
clear that the mode switch has been completed. Note that completion of
the switch might happen much earlier, e.g. if the switch happens
before the job is ready, once all background operations have finished.
It's assumed that whether the disks are actively-synced or not is more
interesting than whether the mode switch completed. That information
can still be added if required in the future.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
block/mirror.c | 10 ++++++++++
qapi/block-core.json | 15 ++++++++++++++-
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/block/mirror.c b/block/mirror.c
index 961aaa5cd6..02b5bd8bd2 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -1253,6 +1253,15 @@ static void mirror_change(BlockJob *job, BlockJobChangeOptions *opts,
s->in_drain = false;
}
+static void mirror_query(BlockJob *job, BlockJobInfo *info)
+{
+ MirrorBlockJob *s = container_of(job, MirrorBlockJob, common);
+
+ info->u.mirror = (BlockJobInfoMirror) {
+ .actively_synced = s->actively_synced,
+ };
+}
+
static const BlockJobDriver mirror_job_driver = {
.job_driver = {
.instance_size = sizeof(MirrorBlockJob),
@@ -1268,6 +1277,7 @@ static const BlockJobDriver mirror_job_driver = {
},
.drained_poll = mirror_drained_poll,
.change = mirror_change,
+ .query = mirror_query,
};
static const BlockJobDriver commit_active_job_driver = {
diff --git a/qapi/block-core.json b/qapi/block-core.json
index adb43a4592..07e0f30492 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -1300,6 +1300,19 @@
{ 'enum': 'MirrorCopyMode',
'data': ['background', 'write-blocking'] }
+##
+# @BlockJobInfoMirror:
+#
+# Information specific to mirror block jobs.
+#
+# @actively-synced: Whether the source is actively synced to the target, i.e.
+# same data and new writes are done synchronously to both.
+#
+# Since 8.0
+##
+{ 'struct': 'BlockJobInfoMirror',
+ 'data': { 'actively-synced': 'bool' } }
+
##
# @BlockJobInfo:
#
@@ -1350,7 +1363,7 @@
'auto-finalize': 'bool', 'auto-dismiss': 'bool',
'*error': 'str' },
'discriminator': 'type',
- 'data': {} }
+ 'data': { 'mirror': 'BlockJobInfoMirror' } }
##
# @query-block-jobs:
--
2.30.2
next prev parent reply other threads:[~2023-02-24 14:52 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-24 14:48 [PATCH 0/9] mirror: allow switching from background to active mode Fiona Ebner
2023-02-24 14:48 ` [PATCH 1/9] blockjob: introduce block-job-change QMP command Fiona Ebner
2023-02-24 14:48 ` [PATCH 2/9] block/mirror: set actively_synced even after the job is ready Fiona Ebner
2023-03-01 14:34 ` Vladimir Sementsov-Ogievskiy
2023-02-24 14:48 ` [PATCH 3/9] mirror: implement mirror_change method Fiona Ebner
2023-03-01 15:18 ` Vladimir Sementsov-Ogievskiy
2023-03-02 10:00 ` Fiona Ebner
2023-02-24 14:48 ` [PATCH 4/9] qapi/block-core: use JobType for BlockJobInfo's type Fiona Ebner
2023-03-01 16:27 ` Vladimir Sementsov-Ogievskiy
2023-02-24 14:48 ` [PATCH 5/9] qapi/block-core: turn BlockJobInfo into a union Fiona Ebner
2023-03-01 16:28 ` Vladimir Sementsov-Ogievskiy
2023-02-24 14:48 ` [PATCH 6/9] blockjob: query driver-specific info via a new 'query' driver method Fiona Ebner
2023-02-24 14:48 ` Fiona Ebner [this message]
2023-02-24 14:48 ` [PATCH 8/9] mirror: return the remaining dirty bytes upon query Fiona Ebner
2023-03-01 16:31 ` Vladimir Sementsov-Ogievskiy
2023-03-02 10:00 ` Fiona Ebner
2023-03-02 10:13 ` Vladimir Sementsov-Ogievskiy
2023-03-02 12:34 ` Fiona Ebner
2023-03-02 16:31 ` Vladimir Sementsov-Ogievskiy
2023-03-03 7:47 ` Fiona Ebner
2023-02-24 14:48 ` [PATCH 9/9] mirror: return the total number of bytes sent " Fiona Ebner
2023-03-01 14:34 ` [PATCH 0/9] mirror: allow switching from background to active mode Vladimir Sementsov-Ogievskiy
2023-03-01 14:49 ` Fiona Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230224144825.466375-8-f.ebner@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=alexander.ivanov@virtuozzo.com \
--cc=armbru@redhat.com \
--cc=den@virtuozzo.com \
--cc=eblake@redhat.com \
--cc=hreitz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=t.lamprecht@proxmox.com \
--cc=vsementsov@yandex-team.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).