diff mbox series

[4/6] block: improve bdrv_child_get_parent_desc()

Message ID 20210503113402.185852-5-vsementsov@virtuozzo.com
State New
Headers show
Series block permission updated follow-up | expand

Commit Message

Vladimir Sementsov-Ogievskiy May 3, 2021, 11:34 a.m. UTC
We have different types of parents: block nodes, block backends and
jobs. So, it makes sense to specify type together with name.

iotest 283 output is updated.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 block.c                    | 2 +-
 tests/qemu-iotests/283.out | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Vladimir Sementsov-Ogievskiy May 3, 2021, 11:48 a.m. UTC | #1
03.05.2021 14:34, Vladimir Sementsov-Ogievskiy wrote:
> We have different types of parents: block nodes, block backends and
> jobs. So, it makes sense to specify type together with name.

I forget to note the main thing of the commit:

This handler us used to compose an error message about permission conflict. And permission conflict occurs in a specific place of block graph. We shouldn't report name of parent device (as it would define another place in block graph), but exactly and only the name of the node. So, use bdrv_get_node_name() directly.

> 
> iotest 283 output is updated.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>   block.c                    | 2 +-
>   tests/qemu-iotests/283.out | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/block.c b/block.c
> index c4023ab4f4..1de2365843 100644
> --- a/block.c
> +++ b/block.c
> @@ -1160,7 +1160,7 @@ int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough)
>   static char *bdrv_child_get_parent_desc(BdrvChild *c)
>   {
>       BlockDriverState *parent = c->opaque;
> -    return g_strdup(bdrv_get_device_or_node_name(parent));
> +    return g_strdup_printf("node '%s'", bdrv_get_node_name(parent));
>   }
>   
>   static void bdrv_child_cb_drained_begin(BdrvChild *child)
> diff --git a/tests/qemu-iotests/283.out b/tests/qemu-iotests/283.out
> index 97e62a4c94..c9397bfc44 100644
> --- a/tests/qemu-iotests/283.out
> +++ b/tests/qemu-iotests/283.out
> @@ -5,7 +5,7 @@
>   {"execute": "blockdev-add", "arguments": {"driver": "blkdebug", "image": "base", "node-name": "other", "take-child-perms": ["write"]}}
>   {"return": {}}
>   {"execute": "blockdev-backup", "arguments": {"device": "source", "sync": "full", "target": "target"}}
> -{"error": {"class": "GenericError", "desc": "Cannot append backup-top filter: Conflicts with use by source as 'image', which does not allow 'write' on base"}}
> +{"error": {"class": "GenericError", "desc": "Cannot append backup-top filter: Conflicts with use by node 'source' as 'image', which does not allow 'write' on base"}}
>   
>   === backup-top should be gone after job-finalize ===
>   
>
diff mbox series

Patch

diff --git a/block.c b/block.c
index c4023ab4f4..1de2365843 100644
--- a/block.c
+++ b/block.c
@@ -1160,7 +1160,7 @@  int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough)
 static char *bdrv_child_get_parent_desc(BdrvChild *c)
 {
     BlockDriverState *parent = c->opaque;
-    return g_strdup(bdrv_get_device_or_node_name(parent));
+    return g_strdup_printf("node '%s'", bdrv_get_node_name(parent));
 }
 
 static void bdrv_child_cb_drained_begin(BdrvChild *child)
diff --git a/tests/qemu-iotests/283.out b/tests/qemu-iotests/283.out
index 97e62a4c94..c9397bfc44 100644
--- a/tests/qemu-iotests/283.out
+++ b/tests/qemu-iotests/283.out
@@ -5,7 +5,7 @@ 
 {"execute": "blockdev-add", "arguments": {"driver": "blkdebug", "image": "base", "node-name": "other", "take-child-perms": ["write"]}}
 {"return": {}}
 {"execute": "blockdev-backup", "arguments": {"device": "source", "sync": "full", "target": "target"}}
-{"error": {"class": "GenericError", "desc": "Cannot append backup-top filter: Conflicts with use by source as 'image', which does not allow 'write' on base"}}
+{"error": {"class": "GenericError", "desc": "Cannot append backup-top filter: Conflicts with use by node 'source' as 'image', which does not allow 'write' on base"}}
 
 === backup-top should be gone after job-finalize ===