All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] Show files ancestors count in HMP
@ 2012-07-23 14:56 benoit.canet
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 1/3] block: create bdrv_get_file_ancestors_count() benoit.canet
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: benoit.canet @ 2012-07-23 14:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, stefanha, Benoît Canet, stefanha, pbonzini

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 ancestors
count and take the good decision (streaming).

Benoît Canet (3):
  block: Add bdrv_are_busy()
  qerror: Add error telling that block dev usage prevents migration
  migration: block migration when any of the block device is busy

 block.c     |   13 +++++++++++++
 block.h     |    2 ++
 migration.c |    5 +++++
 qerror.c    |    4 ++++
 qerror.h    |    3 +++
 5 files changed, 27 insertions(+)

-- 
1.7.9.5

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

* [Qemu-devel] [PATCH 1/3] block: create bdrv_get_file_ancestors_count()
  2012-07-23 14:56 [Qemu-devel] [PATCH 0/3] Show files ancestors count in HMP benoit.canet
@ 2012-07-23 14:56 ` benoit.canet
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 2/3] block: Use file_ancestors_count() in qmp_query_block benoit.canet
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 3/3] hmp: show the files ancestors count benoit.canet
  2 siblings, 0 replies; 5+ messages in thread
From: benoit.canet @ 2012-07-23 14:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, stefanha, Benoît Canet, stefanha, pbonzini

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

Create bdrv_get_file_ancestors_count() 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..1128356 100644
--- a/block.c
+++ b/block.c
@@ -2754,6 +2754,19 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
     return NULL;
 }
 
+int bdrv_get_file_ancestors_count(BlockDriverState *bs)
+{
+    if (!bs->drv) {
+        return 0;
+    }
+
+    if (!bs->backing_hd) {
+        return 0;
+    }
+
+    return 1 + bdrv_get_file_ancestors_count(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..8114ed0 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_file_ancestors_count(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 2/3] block: Use file_ancestors_count() in qmp_query_block
  2012-07-23 14:56 [Qemu-devel] [PATCH 0/3] Show files ancestors count in HMP benoit.canet
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 1/3] block: create bdrv_get_file_ancestors_count() benoit.canet
@ 2012-07-23 14:56 ` benoit.canet
  2012-07-24 17:36   ` Luiz Capitulino
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 3/3] hmp: show the files ancestors count benoit.canet
  2 siblings, 1 reply; 5+ messages in thread
From: benoit.canet @ 2012-07-23 14:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, stefanha, Benoît Canet, stefanha, pbonzini

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

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

Signed-off-by: Benoit Canet <benoit@irqsave.net>
---
 block.c          |    2 ++
 qapi-schema.json |    9 ++++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/block.c b/block.c
index 1128356..23b4aab 100644
--- a/block.c
+++ b/block.c
@@ -2448,6 +2448,8 @@ BlockInfoList *qmp_query_block(Error **errp)
             if (bs->backing_file[0]) {
                 info->value->inserted->has_backing_file = true;
                 info->value->inserted->backing_file = g_strdup(bs->backing_file);
+                info->value->inserted->file_ancestors_count =
+                    bdrv_get_file_ancestors_count(bs);
             }
 
             if (bs->io_limits_enabled) {
diff --git a/qapi-schema.json b/qapi-schema.json
index a92adb1..1ae0fc7 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)
 #
+# @file_ancestors_count: #optional the count of ancestors backing files (for copy-on-write)
+#
 # @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', 'file_ancestors_count', '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 3/3] hmp: show the files ancestors count
  2012-07-23 14:56 [Qemu-devel] [PATCH 0/3] Show files ancestors count in HMP benoit.canet
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 1/3] block: create bdrv_get_file_ancestors_count() benoit.canet
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 2/3] block: Use file_ancestors_count() in qmp_query_block benoit.canet
@ 2012-07-23 14:56 ` benoit.canet
  2 siblings, 0 replies; 5+ messages in thread
From: benoit.canet @ 2012-07-23 14:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, stefanha, Benoît Canet, stefanha, pbonzini

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..025c59f 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, " file_ancestors_count=%" PRId64,
+                    info->value->inserted->file_ancestors_count);
             }
             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 2/3] block: Use file_ancestors_count() in qmp_query_block
  2012-07-23 14:56 ` [Qemu-devel] [PATCH 2/3] block: Use file_ancestors_count() in qmp_query_block benoit.canet
@ 2012-07-24 17:36   ` Luiz Capitulino
  0 siblings, 0 replies; 5+ messages in thread
From: Luiz Capitulino @ 2012-07-24 17:36 UTC (permalink / raw)
  To: benoit.canet
  Cc: kwolf, stefanha, stefanha, qemu-devel, pbonzini, Benoît Canet

On Mon, 23 Jul 2012 16:56:54 +0200
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 count to HMP.
> 
> Signed-off-by: Benoit Canet <benoit@irqsave.net>
> ---
>  block.c          |    2 ++
>  qapi-schema.json |    9 ++++++---
>  2 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/block.c b/block.c
> index 1128356..23b4aab 100644
> --- a/block.c
> +++ b/block.c
> @@ -2448,6 +2448,8 @@ BlockInfoList *qmp_query_block(Error **errp)
>              if (bs->backing_file[0]) {
>                  info->value->inserted->has_backing_file = true;
>                  info->value->inserted->backing_file = g_strdup(bs->backing_file);
> +                info->value->inserted->file_ancestors_count =
> +                    bdrv_get_file_ancestors_count(bs);
>              }
>  
>              if (bs->io_limits_enabled) {
> diff --git a/qapi-schema.json b/qapi-schema.json
> index a92adb1..1ae0fc7 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)
>  #
> +# @file_ancestors_count: #optional the count of ancestors backing files (for copy-on-write)
> +#
>  # @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', 'file_ancestors_count', 'int',

Syntax error, it should be 'file_ancestors_count: int'. And, wouldn't
be better to call it backing_file_ancestors_count?

Otherwise the qmp part looks good to me.

> +            'encrypted': 'bool', 'bps': 'int', 'bps_rd': 'int',
> +            'bps_wr': 'int', 'iops': 'int', 'iops_rd': 'int',
> +            'iops_wr': 'int'} }
>  
>  ##
>  # @BlockDeviceIoStatus:

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

end of thread, other threads:[~2012-07-24 17:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-23 14:56 [Qemu-devel] [PATCH 0/3] Show files ancestors count in HMP benoit.canet
2012-07-23 14:56 ` [Qemu-devel] [PATCH 1/3] block: create bdrv_get_file_ancestors_count() benoit.canet
2012-07-23 14:56 ` [Qemu-devel] [PATCH 2/3] block: Use file_ancestors_count() in qmp_query_block benoit.canet
2012-07-24 17:36   ` Luiz Capitulino
2012-07-23 14:56 ` [Qemu-devel] [PATCH 3/3] hmp: show the files ancestors count 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.