qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP
@ 2012-08-02  8:22 Benoît Canet
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 1/3] block: create bdrv_get_backing_file_depth() Benoît Canet
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Benoît Canet @ 2012-08-02  8:22 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

In some setups many backing files and snapshot are chained.
This lead to the formation of huge trees of snapshots all depending
on a common ancestor.

Hence if something bad happen to this common ancestor all the snapshot
of the tree will be broken.

This patch add an easy way for the user to monitor backing file depth
and take the good decision (streaming).

in v2:

lcapitulino: -Fix typo in qapi-schema.json
             -rename *file_ancestors_count to
              *backing_file_ancestor_count

in v3:

kwolf: qapi-schema.json backing_file_ancestor_count field not optional
       Add a (since 1.2) comment
       keep display in HMP optional

in v4:

eblake: rename backing_file.ancestors.count to backing.file.depth
        in qapi-schema.json use - instead of _
        Fix json docstring

in v5:

eblake: ditch completely the word ancestor in comment
        Add the corresponding patch to qmp-commands.hx

in v6:

lcapitulino: replace - by _ for consistency
             squash two patches 

Benoît Canet (3):
  block: create bdrv_get_backing_file_depth()
  block: Use bdrv_get_backing_file_depth()
  hmp: show the backing file depth

 block.c          |   16 ++++++++++++++++
 block.h          |    1 +
 hmp.c            |    2 ++
 qapi-schema.json |    9 ++++++---
 qmp-commands.hx  |    2 ++
 5 files changed, 27 insertions(+), 3 deletions(-)

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH V6 1/3] block: create bdrv_get_backing_file_depth()
  2012-08-02  8:22 [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Benoît Canet
@ 2012-08-02  8:22 ` Benoît Canet
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 2/3] block: Use bdrv_get_backing_file_depth() Benoît Canet
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Benoît Canet @ 2012-08-02  8:22 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

Create bdrv_get_backing_file_depth() in order to be able to show
in QMP and HMP how many ancestors backing an image a block device
have.

Signed-off-by: Benoit Canet <benoit@irqsave.net>
---
 block.c |   13 +++++++++++++
 block.h |    1 +
 2 files changed, 14 insertions(+)

diff --git a/block.c b/block.c
index ce7eb8f..22ebe49 100644
--- a/block.c
+++ b/block.c
@@ -2754,6 +2754,19 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
     return NULL;
 }
 
+int bdrv_get_backing_file_depth(BlockDriverState *bs)
+{
+    if (!bs->drv) {
+        return 0;
+    }
+
+    if (!bs->backing_hd) {
+        return 0;
+    }
+
+    return 1 + bdrv_get_backing_file_depth(bs->backing_hd);
+}
+
 #define NB_SUFFIXES 4
 
 char *get_human_readable_size(char *buf, int buf_size, int64_t size)
diff --git a/block.h b/block.h
index c89590d..650d872 100644
--- a/block.h
+++ b/block.h
@@ -174,6 +174,7 @@ int coroutine_fn bdrv_co_is_allocated_above(BlockDriverState *top,
                                             int nb_sectors, int *pnum);
 BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
     const char *backing_file);
+int bdrv_get_backing_file_depth(BlockDriverState *bs);
 int bdrv_truncate(BlockDriverState *bs, int64_t offset);
 int64_t bdrv_getlength(BlockDriverState *bs);
 int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH V6 2/3] block: Use bdrv_get_backing_file_depth()
  2012-08-02  8:22 [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Benoît Canet
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 1/3] block: create bdrv_get_backing_file_depth() Benoît Canet
@ 2012-08-02  8:22 ` Benoît Canet
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 3/3] hmp: show the backing file depth Benoît Canet
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Benoît Canet @ 2012-08-02  8:22 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

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>
---
 block.c          |    3 +++
 qapi-schema.json |    9 ++++++---
 qmp-commands.hx  |    2 ++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/block.c b/block.c
index 22ebe49..a6fba1d 100644
--- a/block.c
+++ b/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_depth =
+                bdrv_get_backing_file_depth(bs);
+
             if (bs->io_limits_enabled) {
                 info->value->inserted->bps =
                                bs->io_limits.bps[BLOCK_IO_LIMIT_TOTAL];
diff --git a/qapi-schema.json b/qapi-schema.json
index a92adb1..a31d807 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -398,6 +398,8 @@
 #
 # @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
 #
 # @bps: total throughput limit in bytes per second is specified
@@ -418,9 +420,10 @@
 ##
 { 'type': 'BlockDeviceInfo',
   '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:
diff --git a/qmp-commands.hx b/qmp-commands.hx
index e3cf3c5..ac46638 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -1317,6 +1317,7 @@ Each json-object contain the following:
                                 "nbd", "parallels", "qcow", "qcow2", "raw",
                                 "tftp", "vdi", "vmdk", "vpc", "vvfat"
          - "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)
          - "bps": limit total bytes per second (json-int)
          - "bps_rd": limit read bytes per second (json-int)
@@ -1345,6 +1346,7 @@ Example:
                "drv":"qcow2",
                "encrypted":false,
                "file":"disks/test.img",
+               "backing_file_depth":0,
                "bps":1000000,
                "bps_rd":0,
                "bps_wr":0,
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH V6 3/3] hmp: show the backing file depth
  2012-08-02  8:22 [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Benoît Canet
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 1/3] block: create bdrv_get_backing_file_depth() Benoît Canet
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 2/3] block: Use bdrv_get_backing_file_depth() Benoît Canet
@ 2012-08-02  8:22 ` Benoît Canet
  2012-08-02 20:47 ` [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Luiz Capitulino
  2012-08-02 20:52 ` Eric Blake
  4 siblings, 0 replies; 6+ messages in thread
From: Benoît Canet @ 2012-08-02  8:22 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

Signed-off-by: Benoit Canet <benoit@irqsave.net>
---
 hmp.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/hmp.c b/hmp.c
index 6b72a64..25688ab 100644
--- a/hmp.c
+++ b/hmp.c
@@ -227,6 +227,8 @@ void hmp_info_block(Monitor *mon)
             if (info->value->inserted->has_backing_file) {
                 monitor_printf(mon, " backing_file=");
                 monitor_print_filename(mon, info->value->inserted->backing_file);
+                monitor_printf(mon, " backing_file_depth=%" PRId64,
+                    info->value->inserted->backing_file_depth);
             }
             monitor_printf(mon, " ro=%d drv=%s encrypted=%d",
                            info->value->inserted->ro,
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP
  2012-08-02  8:22 [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Benoît Canet
                   ` (2 preceding siblings ...)
  2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 3/3] hmp: show the backing file depth Benoît Canet
@ 2012-08-02 20:47 ` Luiz Capitulino
  2012-08-02 20:52 ` Eric Blake
  4 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2012-08-02 20:47 UTC (permalink / raw)
  To: Benoît Canet
  Cc: kwolf, Benoît Canet, qemu-devel, pbonzini, eblake, stefanha

On Thu,  2 Aug 2012 10:22:46 +0200
"Benoît Canet" <benoit.canet@gmail.com> wrote:

> In some setups many backing files and snapshot are chained.
> This lead to the formation of huge trees of snapshots all depending
> on a common ancestor.
> 
> Hence if something bad happen to this common ancestor all the snapshot
> of the tree will be broken.
> 
> This patch add an easy way for the user to monitor backing file depth
> and take the good decision (streaming).

This looks good to me now, and as it conflicts with my error work, I've
applied it to the qmp branch.

Reviewers still have time to review it though.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP
  2012-08-02  8:22 [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Benoît Canet
                   ` (3 preceding siblings ...)
  2012-08-02 20:47 ` [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Luiz Capitulino
@ 2012-08-02 20:52 ` Eric Blake
  4 siblings, 0 replies; 6+ messages in thread
From: Eric Blake @ 2012-08-02 20:52 UTC (permalink / raw)
  To: Benoît Canet
  Cc: kwolf, Benoît Canet, qemu-devel, lcapitulino, pbonzini,
	stefanha

[-- Attachment #1: Type: text/plain, Size: 639 bytes --]

On 08/02/2012 02:22 AM, Benoît Canet wrote:
> In some setups many backing files and snapshot are chained.
> This lead to the formation of huge trees of snapshots all depending
> on a common ancestor.
> 
> Hence if something bad happen to this common ancestor all the snapshot
> of the tree will be broken.
> 
> This patch add an easy way for the user to monitor backing file depth
> and take the good decision (streaming).
> 

No further findings from me, so series:

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake   eblake@redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 620 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-08-02 20:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-02  8:22 [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Benoît Canet
2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 1/3] block: create bdrv_get_backing_file_depth() Benoît Canet
2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 2/3] block: Use bdrv_get_backing_file_depth() Benoît Canet
2012-08-02  8:22 ` [Qemu-devel] [PATCH V6 3/3] hmp: show the backing file depth Benoît Canet
2012-08-02 20:47 ` [Qemu-devel] [PATCH V6 0/3] Show backing file depth in HMP and QMP Luiz Capitulino
2012-08-02 20:52 ` Eric Blake

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).