aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2016-02-18 13:16:55 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2016-02-22 18:40:28 +0100
commit4a6b52d67e36486ae3d695170a2a7eb39f7a032e (patch)
tree0dbb63c016d392e73f274c58f488da40d16704bb
parent39ba2ea61f510512764e6f9063a8396d05fe57fe (diff)
Dump: add hmp command "info dump"
It will calculate percentage of finished work from completed and total. Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1455772616-8668-11-git-send-email-peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--hmp-commands-info.hx14
-rw-r--r--hmp.c17
-rw-r--r--hmp.h1
3 files changed, 32 insertions, 0 deletions
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
index 9b71351d01..52539c3109 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -786,6 +786,20 @@ STEXI
Display the value of a storage key (s390 only)
ETEXI
+ {
+ .name = "dump",
+ .args_type = "",
+ .params = "",
+ .help = "Display the latest dump status",
+ .mhandler.cmd = hmp_info_dump,
+ },
+
+STEXI
+@item info dump
+@findex dump
+Display the latest dump status.
+ETEXI
+
STEXI
@end table
ETEXI
diff --git a/hmp.c b/hmp.c
index 7f65b324d7..d0d0557ea0 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2351,3 +2351,20 @@ void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict)
qapi_free_RockerOfDpaGroupList(list);
}
+
+void hmp_info_dump(Monitor *mon, const QDict *qdict)
+{
+ DumpQueryResult *result = qmp_query_dump(NULL);
+
+ assert(result && result->status < DUMP_STATUS__MAX);
+ monitor_printf(mon, "Status: %s\n", DumpStatus_lookup[result->status]);
+
+ if (result->status == DUMP_STATUS_ACTIVE) {
+ float percent = 0;
+ assert(result->total != 0);
+ percent = 100.0 * result->completed / result->total;
+ monitor_printf(mon, "Finished: %.2f %%\n", percent);
+ }
+
+ qapi_free_DumpQueryResult(result);
+}
diff --git a/hmp.h b/hmp.h
index a8c5b5a9a6..093d65f5a3 100644
--- a/hmp.h
+++ b/hmp.h
@@ -131,5 +131,6 @@ void hmp_rocker(Monitor *mon, const QDict *qdict);
void hmp_rocker_ports(Monitor *mon, const QDict *qdict);
void hmp_rocker_of_dpa_flows(Monitor *mon, const QDict *qdict);
void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict);
+void hmp_info_dump(Monitor *mon, const QDict *qdict);
#endif