Pārlūkot izejas kodu

block: Use bdrv_get_backing_file_depth()

Use the dedicated counting function in qmp_query_block in order to
propagate the backing file depth to HMP and add backing_file_depth
to qmp-commands.hx

Signed-off-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Benoît Canet 13 gadi atpakaļ
vecāks
revīzija
2e3e331710
3 mainītis faili ar 11 papildinājumiem un 3 dzēšanām
  1. 3 0
      block.c
  2. 6 3
      qapi-schema.json
  3. 2 0
      qmp-commands.hx

+ 3 - 0
block.c

@@ -2450,6 +2450,9 @@ BlockInfoList *qmp_query_block(Error **errp)
                 info->value->inserted->backing_file = g_strdup(bs->backing_file);
                 info->value->inserted->backing_file = g_strdup(bs->backing_file);
             }
             }
 
 
+            info->value->inserted->backing_file_depth =
+                bdrv_get_backing_file_depth(bs);
+
             if (bs->io_limits_enabled) {
             if (bs->io_limits_enabled) {
                 info->value->inserted->bps =
                 info->value->inserted->bps =
                                bs->io_limits.bps[BLOCK_IO_LIMIT_TOTAL];
                                bs->io_limits.bps[BLOCK_IO_LIMIT_TOTAL];

+ 6 - 3
qapi-schema.json

@@ -398,6 +398,8 @@
 #
 #
 # @backing_file: #optional the name of the backing file (for copy-on-write)
 # @backing_file: #optional the name of the backing file (for copy-on-write)
 #
 #
+# @backing_file_depth: number of files in the backing file chain (since: 1.2)
+#
 # @encrypted: true if the backing device is encrypted
 # @encrypted: true if the backing device is encrypted
 #
 #
 # @bps: total throughput limit in bytes per second is specified
 # @bps: total throughput limit in bytes per second is specified
@@ -418,9 +420,10 @@
 ##
 ##
 { 'type': 'BlockDeviceInfo',
 { 'type': 'BlockDeviceInfo',
   'data': { 'file': 'str', 'ro': 'bool', 'drv': 'str',
   'data': { 'file': 'str', 'ro': 'bool', 'drv': 'str',
-            '*backing_file': 'str', 'encrypted': 'bool',
-            'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
-            'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int'} }
+            '*backing_file': 'str', 'backing_file_depth': 'int',
+            'encrypted': 'bool', 'bps': 'int', 'bps_rd': 'int',
+            'bps_wr': 'int', 'iops': 'int', 'iops_rd': 'int',
+            'iops_wr': 'int'} }
 
 
 ##
 ##
 # @BlockDeviceIoStatus:
 # @BlockDeviceIoStatus:

+ 2 - 0
qmp-commands.hx

@@ -1317,6 +1317,7 @@ Each json-object contain the following:
                                 "nbd", "parallels", "qcow", "qcow2", "raw",
                                 "nbd", "parallels", "qcow", "qcow2", "raw",
                                 "tftp", "vdi", "vmdk", "vpc", "vvfat"
                                 "tftp", "vdi", "vmdk", "vpc", "vvfat"
          - "backing_file": backing file name (json-string, optional)
          - "backing_file": backing file name (json-string, optional)
+         - "backing_file_depth": number of files in the backing file chain (json-int)
          - "encrypted": true if encrypted, false otherwise (json-bool)
          - "encrypted": true if encrypted, false otherwise (json-bool)
          - "bps": limit total bytes per second (json-int)
          - "bps": limit total bytes per second (json-int)
          - "bps_rd": limit read bytes per second (json-int)
          - "bps_rd": limit read bytes per second (json-int)
@@ -1345,6 +1346,7 @@ Example:
                "drv":"qcow2",
                "drv":"qcow2",
                "encrypted":false,
                "encrypted":false,
                "file":"disks/test.img",
                "file":"disks/test.img",
+               "backing_file_depth":0,
                "bps":1000000,
                "bps":1000000,
                "bps_rd":0,
                "bps_rd":0,
                "bps_wr":0,
                "bps_wr":0,