This mirror function will return all image info including
snapshots. Now Qemu have both query-image and query-block
interfaces, and qemu-img share the code for image info
retrieving with qemu emulator.

Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com>
---
 block.c          |   16 ++++++++++++++++
 qapi-schema.json |   11 +++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/block.c b/block.c
index 9dcecec..0e9f414 100644
--- a/block.c
+++ b/block.c
@@ -2964,6 +2964,22 @@ ImageInfo *bdrv_query_image_info(BlockDriverState *bs, 
Error **errp)
     return info;
 }
 
+ImageInfoList *qmp_query_image(Error **errp)
+{
+    ImageInfoList *head = NULL, **p_next = &head;
+    BlockDriverState *bs;
+
+    QTAILQ_FOREACH(bs, &bdrv_states, list) {
+        ImageInfoList *info = g_malloc0(sizeof(*info));
+        info->value = bdrv_query_image_info(bs, NULL);
+
+        *p_next = info;
+        p_next = &info->next;
+    }
+
+    return head;
+}
+
 BlockInfo *bdrv_query_block_info(BlockDriverState *bs)
 {
     BlockInfo *info = g_malloc0(sizeof(*info));
diff --git a/qapi-schema.json b/qapi-schema.json
index 5dfa052..40f96f3 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -720,6 +720,17 @@
 { 'command': 'query-block', 'returns': ['BlockInfo'] }
 
 ##
+# @query-image:
+#
+# Get a list of BlockImage for all virtual block devices.
+#
+# Returns: a list of @BlockImage describing each virtual block device
+#
+# Since: 1.4
+##
+{ 'command': 'query-image', 'returns': ['ImageInfo'] }
+
+##
 # @BlockDeviceStats:
 #
 # Statistics of a virtual block device or a block backing device.
-- 
1.7.1



Reply via email to