qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 19/45] block: add bdrv_query_info


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH v2 19/45] block: add bdrv_query_info
Date: Mon, 15 Oct 2012 17:42:21 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0

Am 26.09.2012 17:56, schrieb Paolo Bonzini:
> Extract it out of the implementation of "info block".
> 
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>         v1->v2: moved bdrv_query_info close to qmp_query_block.
>         Fixed conflicts for the new field 'encryption_key_missing'
>         too.
> 
>  block.c | 104 
> +++++++++++++++++++++++++++++++---------------------------------
>  block.h |   1 +
>  2 file modificati, 52 inserzioni(+), 53 rimozioni(-)
> 
> diff --git a/block.c b/block.c
> index 83a695b..1d95a5d 100644
> --- a/block.c
> +++ b/block.c
> @@ -2653,69 +2653,67 @@ int coroutine_fn 
> bdrv_co_is_allocated_above(BlockDriverState *top,
>      return 0;
>  }
>  
> +BlockInfo *bdrv_query_info(BlockDriverState *bs)
> +{
> +    BlockInfo *info = g_malloc0(sizeof(*info));
> +    info->device = g_strdup(bs->device_name);
> +    info->type = g_strdup("unknown");
> +    info->locked = bdrv_dev_is_medium_locked(bs);
> +    info->removable = bdrv_dev_has_removable_media(bs);
> +
> +    if (bdrv_dev_has_removable_media(bs)) {
> +        info->has_tray_open = true;
> +        info->tray_open = bdrv_dev_is_tray_open(bs);
> +    }
> +
> +    if (bdrv_iostatus_is_enabled(bs)) {
> +        info->has_io_status = true;
> +        info->io_status = bs->iostatus;
> +    }
> +
> +    if (bs->drv) {
> +        info->has_inserted = true;
> +        info->inserted = g_malloc0(sizeof(*info->inserted));
> +        info->inserted->file = g_strdup(bs->filename);
> +        info->inserted->ro = bs->read_only;
> +        info->inserted->drv = g_strdup(bs->drv->format_name);
> +        info->inserted->encrypted = bs->encrypted;
> +        info->inserted->encryption_key_missing = bdrv_key_required(bs);
> +
> +        if (bs->backing_file[0]) {
> +            info->inserted->has_backing_file = true;
> +            info->inserted->backing_file = g_strdup(bs->backing_file);
> +        }
> +
> +        if (bs->io_limits_enabled) {
> +            info->inserted->bps =
> +                           bs->io_limits.bps[BLOCK_IO_LIMIT_TOTAL];
> +            info->inserted->bps_rd =
> +                           bs->io_limits.bps[BLOCK_IO_LIMIT_READ];
> +            info->inserted->bps_wr =
> +                           bs->io_limits.bps[BLOCK_IO_LIMIT_WRITE];
> +            info->inserted->iops =
> +                           bs->io_limits.iops[BLOCK_IO_LIMIT_TOTAL];
> +            info->inserted->iops_rd =
> +                           bs->io_limits.iops[BLOCK_IO_LIMIT_READ];
> +            info->inserted->iops_wr =
> +                           bs->io_limits.iops[BLOCK_IO_LIMIT_WRITE];
> +        }
> +    }
> +    return info;
> +}
> +
>  BlockInfoList *qmp_query_block(Error **errp)
>  {
> -    BlockInfoList *head = NULL, *cur_item = NULL;
> +    BlockInfoList *head = NULL, **p_next = &head;
>      BlockDriverState *bs;
>  
>      QTAILQ_FOREACH(bs, &bdrv_states, list) {
>          BlockInfoList *info = g_malloc0(sizeof(*info));
> +        info->value = bdrv_query_info(bs);
>  
> -        info->value = g_malloc0(sizeof(*info->value));
> -        info->value->device = g_strdup(bs->device_name);
> -        info->value->type = g_strdup("unknown");
> -        info->value->locked = bdrv_dev_is_medium_locked(bs);
> -        info->value->removable = bdrv_dev_has_removable_media(bs);
> -
> -        if (bdrv_dev_has_removable_media(bs)) {
> -            info->value->has_tray_open = true;
> -            info->value->tray_open = bdrv_dev_is_tray_open(bs);
> -        }
> -
> -        if (bdrv_iostatus_is_enabled(bs)) {
> -            info->value->has_io_status = true;
> -            info->value->io_status = bs->iostatus;
> -        }
> -
> -        if (bs->drv) {
> -            info->value->has_inserted = true;
> -            info->value->inserted = 
> g_malloc0(sizeof(*info->value->inserted));
> -            info->value->inserted->file = g_strdup(bs->filename);
> -            info->value->inserted->ro = bs->read_only;
> -            info->value->inserted->drv = g_strdup(bs->drv->format_name);
> -            info->value->inserted->encrypted = bs->encrypted;
> -            info->value->inserted->encryption_key_missing = 
> bdrv_key_required(bs);
> -            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->backing_file_depth =
> -                bdrv_get_backing_file_depth(bs);

Mismerge: This part is missing from bdrv_query_info.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]