[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 07/30] vmdk: fix cluster size check for flat extents
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 07/30] vmdk: fix cluster size check for flat extents |
Date: |
Fri, 27 Sep 2013 17:39:07 +0200 |
From: Fam Zheng <address@hidden>
We use the extent size as cluster size for flat extents (where no L1/L2
table is allocated so it's safe) reuse sector calculating code with
sparse extents.
Don't pass in the cluster size for adding flat extent, just set it to
sectors later, then the cluster size checking will not fail.
The cluster_sectors is changed to int64_t to allow big flat extent.
Without this, flat extent opening is broken:
# qemu-img create -f vmdk -o subformat=monolithicFlat /tmp/a.vmdk 100G
Formatting '/tmp/a.vmdk', fmt=vmdk size=107374182400 compat6=off
subformat='monolithicFlat' zeroed_grain=off
# qemu-img info /tmp/a.vmdk
image: /tmp/a.vmdk
file format: raw
virtual size: 0 (0 bytes)
disk size: 4.0K
Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/vmdk.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/block/vmdk.c b/block/vmdk.c
index 96ef1b5..5d56e31 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -105,7 +105,7 @@ typedef struct VmdkExtent {
uint32_t l2_cache_offsets[L2_CACHE_SIZE];
uint32_t l2_cache_counts[L2_CACHE_SIZE];
- unsigned int cluster_sectors;
+ int64_t cluster_sectors;
} VmdkExtent;
typedef struct BDRVVmdkState {
@@ -424,7 +424,7 @@ static int vmdk_add_extent(BlockDriverState *bs,
extent->l1_size = l1_size;
extent->l1_entry_sectors = l2_size * cluster_sectors;
extent->l2_size = l2_size;
- extent->cluster_sectors = cluster_sectors;
+ extent->cluster_sectors = flat ? sectors : cluster_sectors;
if (s->num_extents > 1) {
extent->end_sector = (*(extent - 1)).end_sector + extent->sectors;
@@ -741,7 +741,7 @@ static int vmdk_parse_extents(const char *desc,
BlockDriverState *bs,
VmdkExtent *extent;
ret = vmdk_add_extent(bs, extent_file, true, sectors,
- 0, 0, 0, 0, sectors, &extent);
+ 0, 0, 0, 0, 0, &extent);
if (ret < 0) {
return ret;
}
--
1.8.1.4
- [Qemu-devel] [PULL 00/30] Block patches, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 01/30] block: fix backing file overriding, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 02/30] qemu-iotests: add test for backing file overriding, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 05/30] block/get_block_status: set *pnum = 0 on error, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 06/30] block/get_block_status: avoid segfault if there is no backing_hd, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 04/30] qcow2: Don't shadow return value, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 03/30] qemu-iotests: Do not execute 052 with -nocache, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 10/30] block: introduce BlockDriver.bdrv_needs_filename to enable some drivers., Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 11/30] block: Fix compiler warning (-Werror=uninitialized), Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 07/30] vmdk: fix cluster size check for flat extents,
Kevin Wolf <=
- [Qemu-devel] [PULL 09/30] qemu-iotests: add monolithicFlat creation test to 059, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 08/30] qemu-iotests: fix test case 059, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 17/30] block: qed - use QEMU_PACKED for on-disk structures, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 12/30] qdict: Extract qdict_extract_subqdict, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 15/30] block: vpc - use QEMU_PACKED for on-disk structures, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 20/30] qemu-iotests: fix qmp.py search path, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 14/30] block: vdi - use QEMU_PACKED for on-disk structures, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 13/30] rbd: avoid qemu_rbd_snap_list() memory leaks, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 18/30] qcow2: Assert against currently impossible overflow, Kevin Wolf, 2013/09/27
- [Qemu-devel] [PULL 16/30] block: qcow2 - used QEMU_PACKED for on-disk structures, Kevin Wolf, 2013/09/27