Re: [PATCH for-5.0 v4 2/5] block: Use bdrv_qapi_perm_to_blk_perm()

2019-11-08 Thread Vladimir Sementsov-Ogievskiy
08.11.2019 15:34, Max Reitz wrote:
> We can save some LoC in xdbg_graph_add_edge() by using
> bdrv_qapi_perm_to_blk_perm().
> 
> Signed-off-by: Max Reitz 

Reviewed-by: Vladimir Sementsov-Ogievskiy 

> ---
>   block.c | 29 -
>   1 file changed, 8 insertions(+), 21 deletions(-)
> 
> diff --git a/block.c b/block.c
> index 066433f3e2..ae279ff21f 100644
> --- a/block.c
> +++ b/block.c
> @@ -4870,36 +4870,23 @@ static void 
> xdbg_graph_add_node(XDbgBlockGraphConstructor *gr, void *node,
>   static void xdbg_graph_add_edge(XDbgBlockGraphConstructor *gr, void *parent,
>   const BdrvChild *child)
>   {
> -typedef struct {
> -unsigned int flag;
> -BlockPermission num;
> -} PermissionMap;
> -
> -static const PermissionMap permissions[] = {
> -{ BLK_PERM_CONSISTENT_READ, BLOCK_PERMISSION_CONSISTENT_READ },
> -{ BLK_PERM_WRITE,   BLOCK_PERMISSION_WRITE },
> -{ BLK_PERM_WRITE_UNCHANGED, BLOCK_PERMISSION_WRITE_UNCHANGED },
> -{ BLK_PERM_RESIZE,  BLOCK_PERMISSION_RESIZE },
> -{ BLK_PERM_GRAPH_MOD,   BLOCK_PERMISSION_GRAPH_MOD },
> -{ 0, 0 }
> -};
> -const PermissionMap *p;
> +BlockPermission qapi_perm;
>   XDbgBlockGraphEdge *edge;
>   
> -QEMU_BUILD_BUG_ON(1UL << (ARRAY_SIZE(permissions) - 1) != BLK_PERM_ALL + 
> 1);
> -
>   edge = g_new0(XDbgBlockGraphEdge, 1);
>   
>   edge->parent = xdbg_graph_node_num(gr, parent);
>   edge->child = xdbg_graph_node_num(gr, child->bs);
>   edge->name = g_strdup(child->name);
>   
> -for (p = permissions; p->flag; p++) {
> -if (p->flag & child->perm) {
> -QAPI_LIST_ADD(edge->perm, p->num);
> +for (qapi_perm = 0; qapi_perm < BLOCK_PERMISSION__MAX; qapi_perm++) {
> +uint64_t flag = bdrv_qapi_perm_to_blk_perm(qapi_perm);
> +
> +if (flag & child->perm) {
> +QAPI_LIST_ADD(edge->perm, qapi_perm);
>   }
> -if (p->flag & child->shared_perm) {
> -QAPI_LIST_ADD(edge->shared_perm, p->num);
> +if (flag & child->shared_perm) {
> +QAPI_LIST_ADD(edge->shared_perm, qapi_perm);
>   }
>   }
>   
> 


-- 
Best regards,
Vladimir



[PATCH for-5.0 v4 2/5] block: Use bdrv_qapi_perm_to_blk_perm()

2019-11-08 Thread Max Reitz
We can save some LoC in xdbg_graph_add_edge() by using
bdrv_qapi_perm_to_blk_perm().

Signed-off-by: Max Reitz 
---
 block.c | 29 -
 1 file changed, 8 insertions(+), 21 deletions(-)

diff --git a/block.c b/block.c
index 066433f3e2..ae279ff21f 100644
--- a/block.c
+++ b/block.c
@@ -4870,36 +4870,23 @@ static void 
xdbg_graph_add_node(XDbgBlockGraphConstructor *gr, void *node,
 static void xdbg_graph_add_edge(XDbgBlockGraphConstructor *gr, void *parent,
 const BdrvChild *child)
 {
-typedef struct {
-unsigned int flag;
-BlockPermission num;
-} PermissionMap;
-
-static const PermissionMap permissions[] = {
-{ BLK_PERM_CONSISTENT_READ, BLOCK_PERMISSION_CONSISTENT_READ },
-{ BLK_PERM_WRITE,   BLOCK_PERMISSION_WRITE },
-{ BLK_PERM_WRITE_UNCHANGED, BLOCK_PERMISSION_WRITE_UNCHANGED },
-{ BLK_PERM_RESIZE,  BLOCK_PERMISSION_RESIZE },
-{ BLK_PERM_GRAPH_MOD,   BLOCK_PERMISSION_GRAPH_MOD },
-{ 0, 0 }
-};
-const PermissionMap *p;
+BlockPermission qapi_perm;
 XDbgBlockGraphEdge *edge;
 
-QEMU_BUILD_BUG_ON(1UL << (ARRAY_SIZE(permissions) - 1) != BLK_PERM_ALL + 
1);
-
 edge = g_new0(XDbgBlockGraphEdge, 1);
 
 edge->parent = xdbg_graph_node_num(gr, parent);
 edge->child = xdbg_graph_node_num(gr, child->bs);
 edge->name = g_strdup(child->name);
 
-for (p = permissions; p->flag; p++) {
-if (p->flag & child->perm) {
-QAPI_LIST_ADD(edge->perm, p->num);
+for (qapi_perm = 0; qapi_perm < BLOCK_PERMISSION__MAX; qapi_perm++) {
+uint64_t flag = bdrv_qapi_perm_to_blk_perm(qapi_perm);
+
+if (flag & child->perm) {
+QAPI_LIST_ADD(edge->perm, qapi_perm);
 }
-if (p->flag & child->shared_perm) {
-QAPI_LIST_ADD(edge->shared_perm, p->num);
+if (flag & child->shared_perm) {
+QAPI_LIST_ADD(edge->shared_perm, qapi_perm);
 }
 }
 
-- 
2.23.0