δΊ 2013-3-30 7:04, Eric Blake ει:
On 03/22/2013 08:19 AM, Wenchao Xia wrote:
This function will simply call qmp interface qmp_query_snapshots()
added in last commit and then dump information in monitor console.
To get snapshot info, Now qemu and qemu-img both call block layer
function bdrv_query_snapshot_info_list() in their calling path, and
then they just translate the qmp object got to strings in stdout or
monitor console.
Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com>
---
hmp.c | 42 ++++++++++++++++++++++++++++++++++++++++++
hmp.h | 1 +
2 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/hmp.c b/hmp.c
index b0a861c..c475d65 100644
--- a/hmp.c
+++ b/hmp.c
@@ -651,6 +651,48 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
qapi_free_TPMInfoList(info_list);
}
+/* assume list is valid */
+static void monitor_dump_snapshotinfolist(Monitor *mon, SnapshotInfoList *list)
+{
+ SnapshotInfoList *elem;
+ char buf[256];
+
+ monitor_printf(mon, "%s\n", bdrv_snapshot_dump(buf, sizeof(buf), NULL));
Are you sure that won't ever be truncated? I'm pretty sure that I could
come up with a scenario where I cause bdrv_snapshot_dump() to want to
output more than 256 bytes of details.
I hope not use dynamic buff for strings, how about check it as
following:
char buf[254] = 0;
monitor_printf(mon, "%s\n", bdrv_snapshot_dump(buf, sizeof(buf), NULL));
if (buf[254]) {
monitor_printf(mon, "'string truncated'");
}
--
Best Regards
Wenchao Xia