On 13.09.2013 17:20, Kevin Wolf wrote:
Am 13.09.2013 um 10:25 hat Paolo Bonzini geschrieben:
Il 13/09/2013 09:33, Peter Lieven ha scritto:
On 06.09.2013 17:39, Stefan Hajnoczi wrote:
From: Paolo Bonzini <pbonz...@redhat.com>

If the sectors are unallocated and we are past the end of the
backing file, they will read as zero.

Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
---
   block.c | 12 ++++++++++--
   1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/block.c b/block.c
index aa9ec83..82bbd6c 100644
--- a/block.c
+++ b/block.c
@@ -3102,8 +3102,16 @@ static int64_t coroutine_fn
bdrv_co_get_block_status(BlockDriverState *bs,
           return ret;
       }
   -    if (!(ret & BDRV_BLOCK_DATA) && bdrv_has_zero_init(bs)) {
-        ret |= BDRV_BLOCK_ZERO;
+    if (!(ret & BDRV_BLOCK_DATA)) {
+        if (bdrv_has_zero_init(bs)) {
this should be bdi->discard_zeroes. bdrv_has_zero_init() does only give
a valid result
right after bdrv_create(). i currently working on extending bdi. I can
send a patch for this
if you agree.
Yes, please.  Right now there is no bdi->discard_zeroes.
If we do this, it needs some function that behaves similar to
bdrv_has_zero_init(); in particular that it returns 0 if there is a
backing file.
I will add bdrv_has_discard_zeroes. Would it be ok if it calls out to
bdrv_get_info to get the discard_zeroes information?

Peter


Reply via email to