[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value |
Date: |
Fri, 19 Jul 2013 11:58:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 |
Il 19/07/2013 08:48, Peter Lieven ha scritto:
>>
>> - return bdrv_get_block_status(bs, sector_num, nb_sectors, pnum);
>> + int64_t ret = bdrv_get_block_status(bs, sector_num, nb_sectors,
>> pnum);
>> + return
>> + (ret & BDRV_BLOCK_DATA) ||
>> + ((ret & BDRV_BLOCK_ZERO) && !bdrv_has_zero_init(bs));
>
> i do also not understand the "((ret & BDRV_BLOCK_ZERO) &&
> !bdrv_has_zero_init(bs))";
> if a block is unallocated and reads as zero, but the device lacks zero
> init, it is declared as allocated with this, isn't it?
Thinking more about it, I would say it is a bugfix.
If a block is unallocated and reads as zero, but the device lacks zero
init, the block contents have changed since the guest was created. Thus
the guest might well be relying on the zero content of the block, and it
should be treated as allocated.
In any case, better safe than sorry---if in doubt, the conservative
answer is always to return 1, and callers who want more precise
information can use bdrv_get_block_status.
Paolo
> for iscsi and host_device with lbprz==1 or discardzeroes respectively all
> blocks would return as allocated. is this wanted?
- [Qemu-devel] [PATCH v2 08/17] block: make bdrv_has_zero_init return false for copy-on-write-images, (continued)
- [Qemu-devel] [PATCH v2 08/17] block: make bdrv_has_zero_init return false for copy-on-write-images, Paolo Bonzini, 2013/07/16
- [Qemu-devel] [PATCH v2 09/17] block: introduce bdrv_get_block_status API, Paolo Bonzini, 2013/07/16
- [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Paolo Bonzini, 2013/07/16
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Peter Lieven, 2013/07/19
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Peter Lieven, 2013/07/19
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Paolo Bonzini, 2013/07/19
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Peter Lieven, 2013/07/19
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Paolo Bonzini, 2013/07/19
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Peter Lieven, 2013/07/19
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Paolo Bonzini, 2013/07/20
- Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Peter Lieven, 2013/07/23
Re: [Qemu-devel] [PATCH v2 10/17] block: define get_block_status return value, Eric Blake, 2013/07/19
[Qemu-devel] [PATCH v2 11/17] block: return get_block_status data and flags for formats, Paolo Bonzini, 2013/07/16
[Qemu-devel] [PATCH v2 13/17] block: use bdrv_has_zero_init to return BDRV_BLOCK_ZERO, Paolo Bonzini, 2013/07/16