[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 30/42] block: define get_block_status return valu
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PULL 30/42] block: define get_block_status return value |
Date: |
Fri, 13 Sep 2013 10:26:44 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 |
Il 13/09/2013 10:04, Peter Lieven ha scritto:
> On 06.09.2013 17:39, Stefan Hajnoczi wrote:
>> From: Paolo Bonzini <address@hidden>
>>
>> Define the return value of get_block_status. Bits 0, 1, 2 and 9-62
>> are valid; bit 63 (the sign bit) is reserved for errors. Bits 3-8
>> are left for future extensions.
>>
>> The return code is compatible with the old is_allocated API: if a driver
>> only returns 0 or 1 (aka BDRV_BLOCK_DATA) like is_allocated used to,
>> clients of is_allocated will not have any change in behavior. Still,
>> we will return more precise information in the next patches and the
>> new definition of bdrv_is_allocated is already prepared for this.
>>
>> Reviewed-by: Eric Blake <address@hidden>
>> Signed-off-by: Paolo Bonzini <address@hidden>
>> Signed-off-by: Stefan Hajnoczi <address@hidden>
>> ---
>> block.c | 10 ++++++++--
>> include/block/block.h | 26 ++++++++++++++++++++++++++
>> 2 files changed, 34 insertions(+), 2 deletions(-)
>>
>> diff --git a/block.c b/block.c
>> index a5bfe74..97406ec 100644
>> --- a/block.c
>> +++ b/block.c
>> @@ -3093,7 +3093,7 @@ static int64_t coroutine_fn
>> bdrv_co_get_block_status(BlockDriverState *bs,
>> if (!bs->drv->bdrv_co_get_block_status) {
>> *pnum = nb_sectors;
>> - return 1;
>> + return BDRV_BLOCK_DATA;
>> }
>> return bs->drv->bdrv_co_get_block_status(bs, sector_num,
>> nb_sectors, pnum);
>> @@ -3143,7 +3143,13 @@ int64_t bdrv_get_block_status(BlockDriverState
>> *bs, int64_t sector_num,
>> int coroutine_fn bdrv_is_allocated(BlockDriverState *bs, int64_t
>> sector_num,
>> int nb_sectors, int *pnum)
>> {
>> - return bdrv_get_block_status(bs, sector_num, nb_sectors, pnum);
>> + int64_t ret = bdrv_get_block_status(bs, sector_num, nb_sectors,
>> pnum);
>> + if (ret < 0) {
> sorry if I repeat myself.
>
> isn't here a *pnum = 0 missing?
I think an earlier patch makes it unnecessary, because I'm checking the
return status of bdrv_get_block_status and bdrv_is_allocated. In any
case the right place to put it would be in bdrv_get_block_status.
Paolo
- [Qemu-devel] [PULL 12/42] block: implement reference count for BlockDriverState, (continued)
- [Qemu-devel] [PULL 12/42] block: implement reference count for BlockDriverState, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 13/42] block: make bdrv_delete() static, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 14/42] migration: omit drive ref as we have bdrv_ref now, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 15/42] xen_disk: simplify blk_disconnect with refcnt, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 27/42] qemu-img: always probe the input image for allocated sectors, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 28/42] block: make bdrv_has_zero_init return false for copy-on-write-images, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 29/42] block: introduce bdrv_get_block_status API, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 31/42] block: return get_block_status data and flags for formats, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 30/42] block: define get_block_status return value, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 32/42] block: use bdrv_has_zero_init to return BDRV_BLOCK_ZERO, Stefan Hajnoczi, 2013/09/06
- [Qemu-devel] [PULL 33/42] block: return BDRV_BLOCK_ZERO past end of backing file, Stefan Hajnoczi, 2013/09/06
[Qemu-devel] [PULL 34/42] qemu-img: add a "map" subcommand, Stefan Hajnoczi, 2013/09/06
[Qemu-devel] [PULL 35/42] docs, qapi: document qemu-img map, Stefan Hajnoczi, 2013/09/06
[Qemu-devel] [PULL 36/42] raw-posix: return get_block_status data and flags, Stefan Hajnoczi, 2013/09/06