@@ -1938,6 +1938,14 @@ void qmp_drive_backup(const char *device, const char *target,
}
}
+BlockGraphNode *qmp_query_drive_graph(const char *device, Error **errp)
+{
+ /* the implementation of this function would recurse through the
+ * BlockDriverState graph to build it's result
+ */
+ return NULL;
+}
+
#define DEFAULT_MIRROR_BUF_SIZE (10 << 20)
void qmp_drive_mirror(const char *device, const char *target,
@@ -1983,6 +1983,38 @@
{ 'command': 'drive-backup', 'data': 'DriveBackup' }
##
+# @BlockGraphNode
+#
+# Information about a node of the block driver state graph
+#
+# @node-name: the name of the node in the graph
+#
+# @drv: the name of the block format used by this node as described in
+# @BlockDeviceInfo.
+#
+# @children: a list of @BlockGraphNode being the children of this node
+#
+# Since 1.8
+##
+{ 'type': 'BlockGraphNode',
+ 'data': { 'node-name': 'str', 'drv': 'str', 'children': ['BlockGraphNode'] } }
+
+##
+# @query-drive-graph
+#
+# Get the block driver states graph for a given drive
+#
+# @device: the name of the device to get the graph from
+#
+# Returns: the root @BlockGraphNode
+#
+# Since 1.8
+##
+{ 'command': 'query-drive-graph',
+ 'data': { 'device': 'str' },
+ 'returns': 'BlockGraphNode' }
+
+##
# @drive-mirror
#
# Start mirroring a block device's writes to a new destination.