* [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