9ae3a8
From bacd188daed3fa0558836cbb6f7175155355c3d2 Mon Sep 17 00:00:00 2001
9ae3a8
Message-Id: <bacd188daed3fa0558836cbb6f7175155355c3d2.1418766606.git.jen@redhat.com>
9ae3a8
In-Reply-To: <6f81b4847eb68ebdf54a8f1a771e19d112d74152.1418766606.git.jen@redhat.com>
9ae3a8
References: <6f81b4847eb68ebdf54a8f1a771e19d112d74152.1418766606.git.jen@redhat.com>
9ae3a8
From: Fam Zheng <famz@redhat.com>
9ae3a8
Date: Thu, 4 Dec 2014 00:05:00 -0600
9ae3a8
Subject: [CHANGE 06/31] vmdk: Fix big flat extent IO
9ae3a8
To: rhvirt-patches@redhat.com,
9ae3a8
    jen@redhat.com
9ae3a8
9ae3a8
RH-Author: Fam Zheng <famz@redhat.com>
9ae3a8
Message-id: <1417651524-18041-7-git-send-email-famz@redhat.com>
9ae3a8
Patchwork-id: 62679
9ae3a8
O-Subject: [RHEL-7.1 qemu-kvm PATCH v5 06/30] vmdk: Fix big flat extent IO
9ae3a8
Bugzilla: 1134241
9ae3a8
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
9ae3a8
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
9ae3a8
RH-Acked-by: Max Reitz <mreitz@redhat.com>
9ae3a8
9ae3a8
Local variable "n" as int64_t avoids overflow with large sector number
9ae3a8
calculation. See test case change for failure case.
9ae3a8
9ae3a8
Signed-off-by: Fam Zheng <famz@redhat.com>
9ae3a8
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
9ae3a8
(cherry picked from commit 585ea0c841df47c1542d33e17c5c6d532316ef74)
9ae3a8
Signed-off-by: Fam Zheng <famz@redhat.com>
9ae3a8
Signed-off-by: Jeff E. Nelson <jen@redhat.com>
9ae3a8
---
9ae3a8
 block/vmdk.c               |  4 +--
9ae3a8
 tests/qemu-iotests/059     |  7 +++++
9ae3a8
 tests/qemu-iotests/059.out | 74 ++++++++++++++++++++++++++++++++++++++++++++++
9ae3a8
 3 files changed, 83 insertions(+), 2 deletions(-)
9ae3a8
9ae3a8
diff --git a/block/vmdk.c b/block/vmdk.c
9ae3a8
index d77eb37..4226baa 100644
9ae3a8
--- a/block/vmdk.c
9ae3a8
+++ b/block/vmdk.c
9ae3a8
@@ -1344,8 +1344,8 @@ static int vmdk_write(BlockDriverState *bs, int64_t sector_num,
9ae3a8
 {
9ae3a8
     BDRVVmdkState *s = bs->opaque;
9ae3a8
     VmdkExtent *extent = NULL;
9ae3a8
-    int n, ret;
9ae3a8
-    int64_t index_in_cluster;
9ae3a8
+    int ret;
9ae3a8
+    int64_t index_in_cluster, n;
9ae3a8
     uint64_t extent_begin_sector, extent_relative_sector_num;
9ae3a8
     uint64_t cluster_offset;
9ae3a8
     VmdkMetaData m_data;
9ae3a8
diff --git a/tests/qemu-iotests/059 b/tests/qemu-iotests/059
9ae3a8
index 9ef848b..dde4a59 100755
9ae3a8
--- a/tests/qemu-iotests/059
9ae3a8
+++ b/tests/qemu-iotests/059
9ae3a8
@@ -102,6 +102,13 @@ echo "=== Testing version 3 ==="
9ae3a8
 _use_sample_img iotest-version3.vmdk.bz2
9ae3a8
 _img_info
9ae3a8
 
9ae3a8
+echo
9ae3a8
+echo "=== Testing 4TB monolithicFlat creation and IO ==="
9ae3a8
+IMGOPTS="subformat=monolithicFlat" _make_test_img 4T
9ae3a8
+_img_info
9ae3a8
+$QEMU_IO -c "write -P 0xa 900G 512" "$TEST_IMG" | _filter_qemu_io
9ae3a8
+$QEMU_IO -c "read -v 900G 1024" "$TEST_IMG" | _filter_qemu_io
9ae3a8
+
9ae3a8
 # success, all done
9ae3a8
 echo "*** done"
9ae3a8
 rm -f $seq.full
9ae3a8
diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
9ae3a8
index f161651..75d9858 100644
9ae3a8
--- a/tests/qemu-iotests/059.out
9ae3a8
+++ b/tests/qemu-iotests/059.out
9ae3a8
@@ -2047,4 +2047,78 @@ RW 12582912 VMFS "dummy.IMGFMT" 1
9ae3a8
 image: TEST_DIR/iotest-version3.IMGFMT
9ae3a8
 file format: IMGFMT
9ae3a8
 virtual size: 1.0G (1073741824 bytes)
9ae3a8
+
9ae3a8
+=== Testing 4TB monolithicFlat creation and IO ===
9ae3a8
+Formatting 'TEST_DIR/iotest-version3.IMGFMT', fmt=IMGFMT size=4398046511104
9ae3a8
+image: TEST_DIR/iotest-version3.IMGFMT
9ae3a8
+file format: IMGFMT
9ae3a8
+virtual size: 4.0T (4398046511104 bytes)
9ae3a8
+wrote 512/512 bytes at offset 966367641600
9ae3a8
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
9ae3a8
+e100000000:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000010:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000020:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000030:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000040:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000050:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000060:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000070:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000080:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000090:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000000a0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000000b0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000000c0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000000d0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000000e0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000000f0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000100:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000110:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000120:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000130:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000140:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000150:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000160:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000170:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000180:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000190:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000001a0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000001b0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000001c0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000001d0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000001e0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e1000001f0:  0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
9ae3a8
+e100000200:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000210:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000220:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000230:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000240:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000250:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000002a0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000002b0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000002c0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000002d0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000002e0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000002f0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000300:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000310:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000320:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000330:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000340:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000350:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e100000390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000003a0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000003b0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000003c0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000003d0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000003e0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+e1000003f0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
9ae3a8
+read 1024/1024 bytes at offset 966367641600
9ae3a8
+1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
9ae3a8
 *** done
9ae3a8
-- 
9ae3a8
2.1.0
9ae3a8