[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/19] block: vhdx - update PAYLOAD_BLOCK_UNMAPPED va
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 06/19] block: vhdx - update PAYLOAD_BLOCK_UNMAPPED value to match 1.00 spec |
Date: |
Fri, 12 Dec 2014 17:09:52 +0000 |
From: Jeff Cody <address@hidden>
The 0.95 VHDX spec defined PAYLOAD_BLOCK_UNMAPPED to be 5. The 1.00
VHDX spec redefines PAYLOAD_BLOCK_UNMAPPED to be 3 instead.
The original value of 5 is now an undefined state in the spec, but it
should be safe to treat it the same and return zeros for data read.
This way, we can maintain compatibility with any images out in the wild
that may have been created in accordance to the 0.95 spec.
Reported-by: Kevin Wolf <address@hidden>
Signed-off-by: Jeff Cody <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block/vhdx.c | 3 ++-
block/vhdx.h | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/block/vhdx.c b/block/vhdx.c
index f1e1e2e..bec10bd 100644
--- a/block/vhdx.c
+++ b/block/vhdx.c
@@ -1111,6 +1111,7 @@ static coroutine_fn int vhdx_co_readv(BlockDriverState
*bs, int64_t sector_num,
case PAYLOAD_BLOCK_NOT_PRESENT: /* fall through */
case PAYLOAD_BLOCK_UNDEFINED:
case PAYLOAD_BLOCK_UNMAPPED:
+ case PAYLOAD_BLOCK_UNMAPPED_v095:
case PAYLOAD_BLOCK_ZERO:
/* return zero */
qemu_iovec_memset(&hd_qiov, 0, 0, sinfo.bytes_avail);
@@ -1277,10 +1278,10 @@ static coroutine_fn int vhdx_co_writev(BlockDriverState
*bs, int64_t sector_num,
sectors_to_write += iov2.iov_len >> BDRV_SECTOR_BITS;
}
}
-
/* fall through */
case PAYLOAD_BLOCK_NOT_PRESENT: /* fall through */
case PAYLOAD_BLOCK_UNMAPPED:
+ case PAYLOAD_BLOCK_UNMAPPED_v095:
case PAYLOAD_BLOCK_UNDEFINED:
bat_prior_offset = sinfo.file_offset;
ret = vhdx_allocate_block(bs, s, &sinfo.file_offset);
diff --git a/block/vhdx.h b/block/vhdx.h
index b4a12a0..7003ab7 100644
--- a/block/vhdx.h
+++ b/block/vhdx.h
@@ -226,7 +226,8 @@ typedef struct QEMU_PACKED VHDXLogDataSector {
#define PAYLOAD_BLOCK_NOT_PRESENT 0
#define PAYLOAD_BLOCK_UNDEFINED 1
#define PAYLOAD_BLOCK_ZERO 2
-#define PAYLOAD_BLOCK_UNMAPPED 5
+#define PAYLOAD_BLOCK_UNMAPPED 3
+#define PAYLOAD_BLOCK_UNMAPPED_v095 5
#define PAYLOAD_BLOCK_FULLY_PRESENT 6
#define PAYLOAD_BLOCK_PARTIALLY_PRESENT 7
--
2.1.0
- [Qemu-devel] [PULL 00/19] Block patches, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 01/19] block migration: fix return value, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 02/19] vmdk: Fix error for JSON descriptor file names, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 03/19] iotests: Add test for vmdk JSON file names, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 04/19] block/rbd: fix memory leak, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 05/19] block: vhdx - remove redundant comments, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 06/19] block: vhdx - update PAYLOAD_BLOCK_UNMAPPED value to match 1.00 spec,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 07/19] block: vhdx - change .vhdx_create default block state to ZERO, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 08/19] qemu-io: Add sigraise command, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 09/19] iotests: Filter for "Killed" in qemu-io output, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 10/19] iotests: Fix test 039, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 11/19] block: vhdx - set .bdrv_has_zero_init to bdrv_has_zero_init_1, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 13/19] block: Don't add trailing space in "Formating..." message, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 14/19] block: drop unused bdrv_clear_incoming_migration_all() prototype, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 15/19] linux-aio: queue requests that cannot be submitted, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 16/19] linux-aio: track whether the queue is blocked, Stefan Hajnoczi, 2014/12/12
- [Qemu-devel] [PULL 17/19] linux-aio: rename LaioQueue idx field to "n", Stefan Hajnoczi, 2014/12/12