Dump: add hmp command "info dump"
authorPeter Xu <peterx@redhat.com>
Thu, 18 Feb 2016 05:16:55 +0000 (13:16 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 22 Feb 2016 17:40:28 +0000 (18:40 +0100)
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>
hmp-commands-info.hx
hmp.c
hmp.h

index 9b71351d01b9b8daec67013a2c321ef3f213b820..52539c3109176b9d78c431ab351b18b2df32c21a 100644 (file)
@@ -784,6 +784,20 @@ STEXI
 @item info skeys @var{address}
 @findex skeys
 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
diff --git a/hmp.c b/hmp.c
index 7f65b324d7b6ff54087801433663a677bfcdfb1c..d0d0557ea02820a51283797d031f74b179cf061c 100644 (file)
--- 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 a8c5b5a9a6591128a2da69a867bbf5d23f3ce9ff..093d65f5a3151cd198adcc5ecd9d4436cf33b6dc 100644 (file)
--- 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