All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: kwolf@redhat.com, stefanha@gmail.com, pbonzini@redhat.com,
	qemu-devel@nongnu.org, lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH V11 07/17] block: add image info query function bdrv_query_image_info()
Date: Thu, 11 Apr 2013 13:59:26 +0800	[thread overview]
Message-ID: <5166513E.8080104@linux.vnet.ibm.com> (raw)
In-Reply-To: <87d2u2xv4n.fsf@blackfin.pond.sub.org>

于 2013-4-10 23:28, Markus Armbruster 写道:
> Wenchao Xia <xiawenc@linux.vnet.ibm.com> writes:
> 
>>    This patch adds function bdrv_query_image_info(), which will
>> retrieve image info in qmp object format. The implementation is
>> based on the code moved from qemu-img.c, but uses block layer
>> function to get snapshot info.
>>
>> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
>> ---
>>   block/qapi.c         |   41 ++++++++++++++++++++++++++++++++++-------
>>   include/block/qapi.h |    6 +++---
>>   qemu-img.c           |    8 ++------
>>   3 files changed, 39 insertions(+), 16 deletions(-)
>>
>> diff --git a/block/qapi.c b/block/qapi.c
>> index 19d4d93..176a479 100644
>> --- a/block/qapi.c
>> +++ b/block/qapi.c
>> @@ -122,18 +122,22 @@ int bdrv_query_snapshot_info_list(BlockDriverState *bs,
>>       return 0;
>>   }
>>   
>> -void bdrv_collect_image_info(BlockDriverState *bs,
>> -                             ImageInfo *info,
>> -                             const char *filename)
>> +/* return 0 on success, and @p_info will be set only on success. */
>> +int bdrv_query_image_info(BlockDriverState *bs,
>> +                          ImageInfo **p_info,
>> +                          Error **errp)
>>   {
>>       uint64_t total_sectors;
>> -    char backing_filename[1024];
>> +    const char *backing_filename;
>>       char backing_filename2[1024];
>>       BlockDriverInfo bdi;
>> +    int ret;
>> +    Error *err = NULL;
>> +    ImageInfo *info = g_new0(ImageInfo, 1);
>>   
>>       bdrv_get_geometry(bs, &total_sectors);
>>   
>> -    info->filename        = g_strdup(filename);
>> +    info->filename        = g_strdup(bs->filename);
>>       info->format          = g_strdup(bdrv_get_format_name(bs));
>>       info->virtual_size    = total_sectors * 512;
>>       info->actual_size     = bdrv_get_allocated_file_size(bs);
>> @@ -150,8 +154,8 @@ void bdrv_collect_image_info(BlockDriverState *bs,
>>           info->dirty_flag = bdi.is_dirty;
>>           info->has_dirty_flag = true;
>>       }
>> -    bdrv_get_backing_filename(bs, backing_filename, sizeof(backing_filename));
>> -    if (backing_filename[0] != '\0') {
>> +    backing_filename = bs->backing_file;
>> +    if (backing_filename && backing_filename[0] != '\0') {
> 
> backing_filename can't possibly be null here, because bs->backing_file
> is an array.
> 
  OK, will remove it.

>>           info->backing_filename = g_strdup(backing_filename);
>>           info->has_backing_filename = true;
>>           bdrv_get_full_backing_filename(bs, backing_filename2,
>> @@ -168,4 +172,27 @@ void bdrv_collect_image_info(BlockDriverState *bs,
>>               info->has_backing_filename_format = true;
>>           }
>>       }
>> +
>> +    ret = bdrv_query_snapshot_info_list(bs, &info->snapshots, false, &err);
>> +    switch (ret) {
>> +    case 0:
>> +        if (info->snapshots) {
>> +            info->has_snapshots = true;
>> +        }
>> +        break;
>> +    /* recoverable error */
>> +    case -ENOMEDIUM:
>> +        error_free(err);
>> +        break;
>> +    case -ENOTSUP:
>> +        error_free(err);
>> +        break;
> 
> Suggest
> 
>         case -ENOMEDIUM:
>         case -ENOTSUP:
>             /* no snapshots on this device */
>             error_free(err);
>             break;
> 
> for clarity.
> 
  OK.

>> +    default:
>> +        error_propagate(errp, err);
>> +        qapi_free_ImageInfo(info);
>> +        return ret;
>> +    }
>> +
>> +    *p_info = info;
>> +    return 0;
>>   }
>> diff --git a/include/block/qapi.h b/include/block/qapi.h
>> index fe66053..2c62fdf 100644
>> --- a/include/block/qapi.h
>> +++ b/include/block/qapi.h
>> @@ -32,7 +32,7 @@ int bdrv_query_snapshot_info_list(BlockDriverState *bs,
>>                                     SnapshotInfoList **p_list,
>>                                     bool vm_snapshot,
>>                                     Error **errp);
>> -void bdrv_collect_image_info(BlockDriverState *bs,
>> -                             ImageInfo *info,
>> -                             const char *filename);
>> +int bdrv_query_image_info(BlockDriverState *bs,
>> +                          ImageInfo **p_info,
>> +                          Error **errp);
>>   #endif
>> diff --git a/qemu-img.c b/qemu-img.c
>> index 261c277..1dd0a60 100644
>> --- a/qemu-img.c
>> +++ b/qemu-img.c
>> @@ -1733,12 +1733,8 @@ static ImageInfoList *collect_image_info_list(const char *filename,
>>               goto err;
>>           }
>>   
>> -        info = g_new0(ImageInfo, 1);
>> -        bdrv_collect_image_info(bs, info, filename);
>> -        if (!bdrv_query_snapshot_info_list(bs, &info->snapshots,
>> -                                           false, NULL) &&
>> -            info->snapshots) {
>> -            info->has_snapshots = true;
>> +        if (bdrv_query_image_info(bs, &info, NULL)) {
>> +            goto err;
>>           }
>>   
>>           elem = g_new0(ImageInfoList, 1);
> 


-- 
Best Regards

Wenchao Xia

  reply	other threads:[~2013-04-11  5:59 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-02 11:47 [Qemu-devel] [PATCH V11 00/17] qmp/hmp interfaces for internal snapshot info Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 01/17] block: move bdrv_snapshot_find() to block/snapshot.c Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 02/17] block: distinguish id and name in bdrv_find_snapshot() Wenchao Xia
2013-04-10 15:21   ` Markus Armbruster
2013-04-11  3:16     ` Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 03/17] qemu-img: remove unused parameter in collect_image_info() Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 04/17] block: move collect_snapshots() and collect_image_info() to block/qapi.c Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 05/17] block: add snapshot info query function bdrv_query_snapshot_info_list() Wenchao Xia
2013-04-03  1:17   ` Eric Blake
2013-04-03  5:24     ` Wenchao Xia
2013-04-10 15:11     ` Markus Armbruster
2013-04-11  3:19       ` Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 06/17] block: add check for VM snapshot in bdrv_query_snapshot_info_list() Wenchao Xia
2013-04-10 15:19   ` Markus Armbruster
2013-04-11  5:56     ` Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 07/17] block: add image info query function bdrv_query_image_info() Wenchao Xia
2013-04-10 15:28   ` Markus Armbruster
2013-04-11  5:59     ` Wenchao Xia [this message]
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 08/17] block: move qmp_query_block() and bdrv_query_info() to block/qapi.c Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots Wenchao Xia
2013-04-08 13:28   ` Stefan Hajnoczi
2013-04-10 15:51   ` Markus Armbruster
2013-04-11  6:03     ` Wenchao Xia
2013-04-11 12:11       ` Markus Armbruster
2013-04-11 12:44         ` Luiz Capitulino
2013-04-11 13:08           ` Eric Blake
2013-04-11 13:39             ` Luiz Capitulino
2013-04-12  3:17               ` Wenchao Xia
2013-04-12  3:22                 ` Eric Blake
2013-04-12  9:39                   ` Wenchao Xia
2013-04-12 11:45                     ` Markus Armbruster
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 10/17] qmp: add recursive member in ImageInfo Wenchao Xia
2013-04-10 16:06   ` Markus Armbruster
2013-04-11  6:06     ` Wenchao Xia
2013-04-11  9:28       ` Markus Armbruster
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 11/17] qmp: add ImageInfo in BlockDeviceInfo used by query-block Wenchao Xia
2013-04-08 10:04   ` Kevin Wolf
2013-04-08 13:33   ` Stefan Hajnoczi
2013-04-10  7:30     ` Wenchao Xia
2013-04-11  8:54       ` Stefan Hajnoczi
2013-04-10 16:17     ` Markus Armbruster
2013-04-10 18:57       ` Luiz Capitulino
2013-04-11  6:25         ` Wenchao Xia
2013-04-11  9:31           ` Markus Armbruster
2013-04-12  3:25             ` Wenchao Xia
2013-04-10 16:27   ` Markus Armbruster
2013-04-11  6:20     ` Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 12/17] block: move bdrv_snapshot_dump() and dump_human_image_info() to block/qapi.c Wenchao Xia
2013-04-10 16:49   ` Markus Armbruster
2013-04-11  6:30     ` Wenchao Xia
2013-04-11  9:50       ` Markus Armbruster
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 13/17] block: dump to buffer for bdrv_snapshot_dump() and bdrv_image_info_dump() Wenchao Xia
2013-04-08 13:36   ` Stefan Hajnoczi
2013-04-10 16:56     ` Markus Armbruster
2013-04-10 17:05   ` Markus Armbruster
2013-04-11  6:35     ` Wenchao Xia
2013-04-11 12:05       ` Markus Armbruster
2013-04-12  4:51         ` Wenchao Xia
2013-04-12 11:51           ` Markus Armbruster
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 14/17] hmp: add function hmp_info_snapshots() Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 15/17] hmp: switch snapshot info function to qmp based one Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 16/17] hmp: show ImageInfo in 'info block' Wenchao Xia
2013-04-02 11:47 ` [Qemu-devel] [PATCH V11 17/17] hmp: add parameters device and -v for info block Wenchao Xia
2013-04-07  5:54 ` [Qemu-devel] [PATCH V11 00/17] qmp/hmp interfaces for internal snapshot info Wenchao Xia
2013-04-08 10:18 ` Kevin Wolf
2013-04-08 13:43 ` Stefan Hajnoczi
2013-04-11 12:17 ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5166513E.8080104@linux.vnet.ibm.com \
    --to=xiawenc@linux.vnet.ibm.com \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.