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