From: Sanidhya Kashyap <sanidhya.iiith@gmail.com>
To: qemu list <qemu-devel@nongnu.org>
Cc: Juan Quintela <quintela@redhat.com>
Subject: [Qemu-devel] [PATCH 4/6] cancel mechanism for an already running dump bitmap process
Date: Tue, 20 May 2014 23:17:53 +0530 [thread overview]
Message-ID: <1400608075-19917-5-git-send-email-sanidhya.iiith@gmail.com> (raw)
In-Reply-To: <1400608075-19917-1-git-send-email-sanidhya.iiith@gmail.com>
This patch introduces both hmp and qmp (log-dirty-bitmap-cancel) interface
to cancel an already executing dump process.
Signed-off-by: Sanidhya Kashyap <sanidhya.iiith@gmail.com>
---
hmp-commands.hx | 14 ++++++++++++++
hmp.c | 5 +++++
hmp.h | 1 +
qapi-schema.json | 5 +++++
qmp-commands.hx | 20 ++++++++++++++++++++
savevm.c | 19 +++++++++++++++++++
6 files changed, 64 insertions(+)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 032a320..a8e13b3 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1791,6 +1791,20 @@ STEXI
umps the writable working set of the VM's memoryto a file
ETEXI
+ {
+ .name = "ldbc|log-dirty-bitmap-cancel",
+ .args_type = "",
+ .params = "",
+ .help = "cancel the current VM logging",
+ .mhandler.cmd = hmp_log_dirty_bitmap_cancel,
+},
+
+STEXI
+@item ldbc or log-dirty-bitmap-cancel
+@findex log-dirty-bitmap-cancel
+Cancel the current VM migration.
+ETEXI
+
STEXI
@end table
ETEXI
diff --git a/hmp.c b/hmp.c
index cc54988..7bbbaad 100644
--- a/hmp.c
+++ b/hmp.c
@@ -1328,6 +1328,11 @@ void hmp_log_dirty_bitmap(Monitor *mon, const QDict *qdict)
}
}
+void hmp_log_dirty_bitmap_cancel(Monitor *mon, const QDict *qdict)
+{
+ qmp_log_dirty_bitmap_cancel(NULL);
+}
+
void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict)
{
Error *err = NULL;
diff --git a/hmp.h b/hmp.h
index bf6cc2a..d98b2ae 100644
--- a/hmp.h
+++ b/hmp.h
@@ -94,6 +94,7 @@ void hmp_cpu_add(Monitor *mon, const QDict *qdict);
void hmp_object_add(Monitor *mon, const QDict *qdict);
void hmp_object_del(Monitor *mon, const QDict *qdict);
void hmp_log_dirty_bitmap(Monitor *mon, const QDict *qdict);
+void hmp_log_dirty_bitmap_cancel(Monitor *mon, const QDict *qdict);
void object_add_completion(ReadLineState *rs, int nb_args, const char *str);
void object_del_completion(ReadLineState *rs, int nb_args, const char *str);
void device_add_completion(ReadLineState *rs, int nb_args, const char *str);
diff --git a/qapi-schema.json b/qapi-schema.json
index c1dba64..e897adb 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -4710,3 +4710,8 @@
'*epochs' : 'int',
'*frequency' : 'int',
'*readable' : 'bool' } }
+## @log-dirty-bitmap-cancel
+#
+# cancel the dirty bitmap logging process
+##
+{ 'command': 'log-dirty-bitmap-cancel' }
diff --git a/qmp-commands.hx b/qmp-commands.hx
index 33e7719..55b2251 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -3603,3 +3603,23 @@ value is 3 while that of frequency is 40 and readable defaults to false.
EQMP
+ {
+ .name = "log-dirty-bitmap-cancel",
+ .args_type = "",
+ .mhandler.cmd_new = qmp_marshal_input_log_dirty_bitmap_cancel,
+ },
+
+SQMP
+log_bitmap_cancel
+--------------
+
+Cancel the current logging of the dirty bitmap.
+
+Arguments: None.
+
+Example:
+
+-> { "execute": "log-bitmap-cancel" }
+<- { "return": {} }
+
+EQMP
diff --git a/savevm.c b/savevm.c
index 25d399a..1859f57 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1320,6 +1320,25 @@ void qmp_log_dirty_bitmap(const char *filename, bool has_epochs,
return;
}
+static void logging_bitmap_cancel(BitmapLogState *b)
+{
+ int old_state;
+ do {
+ old_state = b->state;
+ if (old_state != LOG_BITMAP_STATE_SETUP &&
+ old_state != LOG_BITMAP_STATE_ACTIVE) {
+ break;
+ }
+ logging_state_set_status(b, old_state,
+ LOG_BITMAP_STATE_CANCELING);
+ } while (b->state != LOG_BITMAP_STATE_CANCELING);
+}
+
+void qmp_log_dirty_bitmap_cancel(Error **errp)
+{
+ logging_bitmap_cancel(logging_current_state());
+}
+
void qmp_xen_save_devices_state(const char *filename, Error **errp)
{
QEMUFile *f;
--
1.8.3.1
next prev parent reply other threads:[~2014-05-20 17:48 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-20 17:47 [Qemu-devel] [PATCH 0/6] Obtain dirty bitmap via VM logging Sanidhya Kashyap
2014-05-20 17:47 ` [Qemu-devel] [PATCH 1/6] split dirty bitmap into four for dumping the bitmaps Sanidhya Kashyap
2014-05-20 17:47 ` [Qemu-devel] [PATCH 2/6] bitmap dump code via QAPI framework Sanidhya Kashyap
2014-05-20 19:03 ` Eric Blake
2014-05-20 19:25 ` Sanidhya Kashyap
2014-05-20 17:47 ` [Qemu-devel] [PATCH 3/6] hmp interface for dirty bitmap dump Sanidhya Kashyap
2014-05-20 17:47 ` Sanidhya Kashyap [this message]
2014-05-20 19:34 ` [Qemu-devel] [PATCH 4/6] cancel mechanism for an already running dump bitmap process Eric Blake
2014-05-20 17:47 ` [Qemu-devel] [PATCH 5/6] set the frequency of the " Sanidhya Kashyap
2014-05-20 19:36 ` Eric Blake
2014-05-20 17:47 ` [Qemu-devel] [PATCH 6/6] python script for extracting bitmap from a binary file Sanidhya Kashyap
2014-05-20 19:38 ` Eric Blake
2014-05-20 19:39 ` Eric Blake
2014-05-21 0:43 ` Sanidhya Kashyap
2014-05-21 4:13 ` [Qemu-devel] [PATCH 0/6] Obtain dirty bitmap via VM logging ChenLiang
2014-05-21 4:56 ` Sanidhya Kashyap
2014-05-21 6:45 ` ChenLiang
2014-05-21 6:55 ` Sanidhya Kashyap
2014-05-22 11:21 ` Sanidhya Kashyap
2014-05-22 12:57 ` ChenLiang
2014-05-23 2:30 ` Sanidhya Kashyap
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=1400608075-19917-5-git-send-email-sanidhya.iiith@gmail.com \
--to=sanidhya.iiith@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.