[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 33/42] block: return BDRV_BLOCK_ZERO past end of back
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 33/42] block: return BDRV_BLOCK_ZERO past end of backing file |
Date: |
Fri, 6 Sep 2013 17:39:04 +0200 |
From: Paolo Bonzini <address@hidden>
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 <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
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)) {
+ ret |= BDRV_BLOCK_ZERO;
+ } else {
+ BlockDriverState *bs2 = bs->backing_hd;
+ int64_t length2 = bdrv_getlength(bs2);
+ if (length2 >= 0 && sector_num >= (length2 >> BDRV_SECTOR_BITS)) {
+ ret |= BDRV_BLOCK_ZERO;
+ }
+ }
}
return ret;
}
--
1.8.3.1
- [Qemu-devel] [PULL 15/42] xen_disk: simplify blk_disconnect with refcnt, (continued)
- [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 <=
[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
[Qemu-devel] [PULL 37/42] raw-posix: report unwritten extents as zero, Stefan Hajnoczi, 2013/09/06
[Qemu-devel] [PULL 38/42] block: add default get_block_status implementation for protocols, Stefan Hajnoczi, 2013/09/06
[Qemu-devel] [PULL 39/42] block: look for zero blocks in bs->file, Stefan Hajnoczi, 2013/09/06