All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH V4 0/3] Show backing file depth in HMP
@ 2012-07-26 11:16 benoit.canet
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 1/3] block: create bdrv_get_backing_file_depth() benoit.canet
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: benoit.canet @ 2012-07-26 11:16 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

From: Benoît Canet <benoit@irqsave.net>

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

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 ++++++---
 4 files changed, 25 insertions(+), 3 deletions(-)

-- 
1.7.9.5

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

* [Qemu-devel] [PATCH V4 1/3] block: create bdrv_get_backing_file_depth()
  2012-07-26 11:16 [Qemu-devel] [PATCH V4 0/3] Show backing file depth in HMP benoit.canet
@ 2012-07-26 11:16 ` benoit.canet
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 2/3] block: Use bdrv_get_backing_file_depth() benoit.canet
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 3/3] hmp: show the backing file depth benoit.canet
  2 siblings, 0 replies; 5+ messages in thread
From: benoit.canet @ 2012-07-26 11:16 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

From: Benoît Canet <benoit@irqsave.net>

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] 5+ messages in thread

* [Qemu-devel] [PATCH V4 2/3] block: Use bdrv_get_backing_file_depth()
  2012-07-26 11:16 [Qemu-devel] [PATCH V4 0/3] Show backing file depth in HMP benoit.canet
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 1/3] block: create bdrv_get_backing_file_depth() benoit.canet
@ 2012-07-26 11:16 ` benoit.canet
  2012-07-26 12:30   ` Eric Blake
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 3/3] hmp: show the backing file depth benoit.canet
  2 siblings, 1 reply; 5+ messages in thread
From: benoit.canet @ 2012-07-26 11:16 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

From: Benoît Canet <benoit@irqsave.net>

Use the dedicated counting function in qmp_query_block in order to
propagate the backing file depth to HMP.

Signed-off-by: Benoit Canet <benoit@irqsave.net>
---
 block.c          |    3 +++
 qapi-schema.json |    9 ++++++---
 2 files changed, 9 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..70a17fb 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: the count of ancestor's backing files (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:
-- 
1.7.9.5

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

* [Qemu-devel] [PATCH V4 3/3] hmp: show the backing file depth
  2012-07-26 11:16 [Qemu-devel] [PATCH V4 0/3] Show backing file depth in HMP benoit.canet
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 1/3] block: create bdrv_get_backing_file_depth() benoit.canet
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 2/3] block: Use bdrv_get_backing_file_depth() benoit.canet
@ 2012-07-26 11:16 ` benoit.canet
  2 siblings, 0 replies; 5+ messages in thread
From: benoit.canet @ 2012-07-26 11:16 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Benoît Canet, lcapitulino, pbonzini, eblake, stefanha

From: Benoît Canet <benoit@irqsave.net>

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] 5+ messages in thread

* Re: [Qemu-devel] [PATCH V4 2/3] block: Use bdrv_get_backing_file_depth()
  2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 2/3] block: Use bdrv_get_backing_file_depth() benoit.canet
@ 2012-07-26 12:30   ` Eric Blake
  0 siblings, 0 replies; 5+ messages in thread
From: Eric Blake @ 2012-07-26 12:30 UTC (permalink / raw)
  To: benoit.canet
  Cc: kwolf, Benoît Canet, qemu-devel, lcapitulino, pbonzini, stefanha

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

On 07/26/2012 05:16 AM, benoit.canet@gmail.com wrote:
> From: Benoît Canet <benoit@irqsave.net>
> 
> Use the dedicated counting function in qmp_query_block in order to
> propagate the backing file depth to HMP.
> 
>  #
> +# @backing-file-depth: the count of ancestor's backing files (since: 1.2)
> +#

That still reads awkwardly; I had suggested completely ditching the word
'ancestor':

@backing_file_depth: number of files in the backing file chain (since: 1.2)

Also missing a counterpart patch to query-block in qmp-commands.hx to
list the new backing-file-depth field.

-- 
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] 5+ messages in thread

end of thread, other threads:[~2012-07-26 12:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-26 11:16 [Qemu-devel] [PATCH V4 0/3] Show backing file depth in HMP benoit.canet
2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 1/3] block: create bdrv_get_backing_file_depth() benoit.canet
2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 2/3] block: Use bdrv_get_backing_file_depth() benoit.canet
2012-07-26 12:30   ` Eric Blake
2012-07-26 11:16 ` [Qemu-devel] [PATCH V4 3/3] hmp: show the backing file depth benoit.canet

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.