From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Kevin Wolf <kwolf@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>
Subject: [Qemu-devel] [PULL 21/29] iotests: Test post-backing convert target behavior
Date: Mon, 11 Jun 2018 16:26:03 +0200 [thread overview]
Message-ID: <20180611142611.6609-22-mreitz@redhat.com> (raw)
In-Reply-To: <20180611142611.6609-1-mreitz@redhat.com>
This adds a test case to 122 for what happens when you convert to a
target with a backing file that is shorter than the target, and the
image format does not support efficient zero writes (as is the case with
qcow2 v2).
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-id: 20180501165750.19242-3-mreitz@redhat.com
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/122 | 42 ++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/122.out | 18 ++++++++++++++++
2 files changed, 60 insertions(+)
diff --git a/tests/qemu-iotests/122 b/tests/qemu-iotests/122
index 45b359c2ba..d8c8ad722d 100755
--- a/tests/qemu-iotests/122
+++ b/tests/qemu-iotests/122
@@ -76,6 +76,48 @@ $QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
+echo
+echo "=== Converting to an overlay larger than its backing file ==="
+echo
+
+TEST_IMG="$TEST_IMG".base _make_test_img 256M
+# Needs to be at least how much an L2 table covers
+# (64 kB/entry * 64 kB / 8 B/entry = 512 MB)
+# That way, qcow2 will yield at least two status request responses.
+# With just a single response, it would always say "Allocated in the
+# backing file", so the optimization qemu-img convert tries to do is
+# done automatically. Once it has to be queried twice, however (and
+# one of the queries is completely after the end of the backing file),
+# the block layer will automatically add a ZERO flag that qemu-img
+# convert used to follow up with a zero write to the target.
+# We do not want such a zero write, however, because we are past the
+# end of the backing file on the target as well, so we do not need to
+# write anything there.
+_make_test_img -b "$TEST_IMG".base 768M
+
+# Use compat=0.10 as the output so there is no zero cluster support
+$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o compat=0.10 \
+ "$TEST_IMG" "$TEST_IMG".orig
+# See that nothing has been allocated past 64M
+$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
+
+echo
+
+# Just before the end of the backing file
+$QEMU_IO -c 'write -P 0x11 255M 1M' "$TEST_IMG".base 2>&1 | _filter_qemu_io
+# Somewhere in the second L2 table
+$QEMU_IO -c 'write -P 0x22 600M 1M' "$TEST_IMG" 2>&1 | _filter_qemu_io
+
+$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o compat=0.10 \
+ "$TEST_IMG" "$TEST_IMG".orig
+
+$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
+$QEMU_IO -c 'read -P 0x11 255M 1M' \
+ -c 'read -P 0x22 600M 1M' \
+ "$TEST_IMG".orig \
+ | _filter_qemu_io
+
+
echo
echo "=== Concatenate multiple source images ==="
echo
diff --git a/tests/qemu-iotests/122.out b/tests/qemu-iotests/122.out
index 47d8656db8..6c7ee1da6c 100644
--- a/tests/qemu-iotests/122.out
+++ b/tests/qemu-iotests/122.out
@@ -28,6 +28,24 @@ read 3145728/3145728 bytes at offset 0
read 3145728/3145728 bytes at offset 0
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== Converting to an overlay larger than its backing file ===
+
+Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=268435456
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=805306368 backing_file=TEST_DIR/t.IMGFMT.base
+Offset Length File
+
+wrote 1048576/1048576 bytes at offset 267386880
+1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 629145600
+1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Offset Length File
+0xff00000 0x100000 TEST_DIR/t.IMGFMT.base
+0x25800000 0x100000 TEST_DIR/t.IMGFMT.orig
+read 1048576/1048576 bytes at offset 267386880
+1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 1048576/1048576 bytes at offset 629145600
+1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
=== Concatenate multiple source images ===
Formatting 'TEST_DIR/t.IMGFMT.1', fmt=IMGFMT size=4194304
--
2.17.1
next prev parent reply other threads:[~2018-06-11 14:27 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-11 14:25 [Qemu-devel] [PULL 00/29] Block patches Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 01/29] block/file-posix: Pass FD to locking helpers Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 02/29] block/file-posix: File locking during creation Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 03/29] iotests: Add creation test to 153 Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 04/29] qemu-img: Amendment support implies create_opts Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 05/29] block: Add Error parameter to bdrv_amend_options Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 06/29] qemu-option: Pull out "Supported options" print Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 07/29] qemu-img: Add print_amend_option_help() Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 08/29] qemu-img: Recognize no creation support in -o help Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 09/29] iotests: Test help option for unsupporting formats Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 10/29] iotests: Rework 113 Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 11/29] qcow2: Repair OFLAG_COPIED when fixing leaks Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 12/29] iotests: Repairing error during snapshot deletion Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 13/29] qemu-io: Drop command functions' return values Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 14/29] qemu-io: Let command functions return error code Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 15/29] qemu-io: Exit with error when a command failed Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 16/29] iotests.py: Add qemu_io_silent Max Reitz
2018-06-11 14:25 ` [Qemu-devel] [PULL 17/29] iotests: Let 216 make use of qemu-io's exit code Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 18/29] qemu-img: Resolve relative backing paths in rebase Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 19/29] iotests: Add test for rebasing with relative paths Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 20/29] qemu-img: Special post-backing convert handling Max Reitz
2018-06-11 14:26 ` Max Reitz [this message]
2018-06-11 14:26 ` [Qemu-devel] [PULL 22/29] iotests: improve pause_job Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 23/29] iotests: Fix 219's timing Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 24/29] qemu-img: Remove deprecated -s snapshot_id_or_name option Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 25/29] block/qcow2-bitmap: fix free_bitmap_clusters Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 26/29] throttle: Fix crash on reopen Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 27/29] block: Make bdrv_is_writable() public Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 28/29] qcow2: Do not mark inactive images corrupt Max Reitz
2018-06-11 14:26 ` [Qemu-devel] [PULL 29/29] iotests: Add case for a corrupted inactive image Max Reitz
2018-06-11 15:20 ` [Qemu-devel] [PULL 00/29] Block patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180611142611.6609-22-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).