From ab3a32ad5ea841c313e5f9c5f0d4ec02a8e9ddfc Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Thu, 12 Apr 2012 15:28:12 +0200 Subject: [PATCH] qemu-iotests: Test backing file COW with zero clusters Signed-off-by: Kevin Wolf --- tests/qemu-iotests/034 | 113 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/034.out | 81 ++++++++++++++++++++++++++++++++ tests/qemu-iotests/group | 1 + 3 files changed, 195 insertions(+) create mode 100755 tests/qemu-iotests/034 create mode 100644 tests/qemu-iotests/034.out diff --git a/tests/qemu-iotests/034 b/tests/qemu-iotests/034 new file mode 100755 index 0000000000..8254df82ba --- /dev/null +++ b/tests/qemu-iotests/034 @@ -0,0 +1,113 @@ +#!/bin/bash +# +# Test bdrv_write_zeroes with backing files +# +# Copyright (C) 2012 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# creator +owner=kwolf@redhat.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + _cleanup_test_img +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +_supported_fmt qcow qcow2 vmdk qed +_supported_proto generic +_supported_os Linux + +CLUSTER_SIZE=4k +size=128M + +echo +echo "== creating backing file for COW tests ==" + +_make_test_img $size +$QEMU_IO -c "write -P 0x55 0 1M" $TEST_IMG | _filter_qemu_io +mv $TEST_IMG $TEST_IMG.base + +_make_test_img -b $TEST_IMG.base 6G + +echo +echo "== zero write with backing file ==" +$QEMU_IO -c "write -z 64k 192k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "write -z 513k 13k" $TEST_IMG | _filter_qemu_io + +_check_test_img + +echo +echo "== verifying patterns (3) ==" +$QEMU_IO -c "read -P 0x55 0 64k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x0 64k 192k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x55 256k 257k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x0 513k 13k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x55 526k 498k" $TEST_IMG | _filter_qemu_io + +echo +echo "== overwriting zero cluster ==" +$QEMU_IO -c "write -P 0xa 60k 8k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "write -P 0xb 64k 8k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "write -P 0xc 76k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "write -P 0xd 252k 8k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "write -P 0xe 248k 8k" $TEST_IMG | _filter_qemu_io + +_check_test_img + +echo +echo "== verifying patterns (4) ==" +$QEMU_IO -c "read -P 0x55 0 60k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xa 60k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xb 64k 8k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x0 72k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xc 76k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x0 80k 168k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xe 248k 8k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xd 256k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x55 260k 64k" $TEST_IMG | _filter_qemu_io + +echo +echo "== re-zeroing overwritten area ==" +$QEMU_IO -c "write -z 64k 192k" $TEST_IMG | _filter_qemu_io + +_check_test_img + +echo +echo "== verifying patterns (5) ==" +$QEMU_IO -c "read -P 0x55 0 60k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xa 60k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x0 64k 192k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0xd 256k 4k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x55 260k 253k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x0 513k 13k" $TEST_IMG | _filter_qemu_io +$QEMU_IO -c "read -P 0x55 526k 498k" $TEST_IMG | _filter_qemu_io + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 diff --git a/tests/qemu-iotests/034.out b/tests/qemu-iotests/034.out new file mode 100644 index 0000000000..e82dae55f7 --- /dev/null +++ b/tests/qemu-iotests/034.out @@ -0,0 +1,81 @@ +QA output created by 034 + +== creating backing file for COW tests == +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 +wrote 1048576/1048576 bytes at offset 0 +1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file='TEST_DIR/t.IMGFMT.base' + +== zero write with backing file == +wrote 196608/196608 bytes at offset 65536 +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 13312/13312 bytes at offset 525312 +13 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +No errors were found on the image. + +== verifying patterns (3) == +read 65536/65536 bytes at offset 0 +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 196608/196608 bytes at offset 65536 +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 263168/263168 bytes at offset 262144 +257 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 13312/13312 bytes at offset 525312 +13 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 509952/509952 bytes at offset 538624 +498 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +== overwriting zero cluster == +wrote 8192/8192 bytes at offset 61440 +8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 8192/8192 bytes at offset 65536 +8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 77824 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 8192/8192 bytes at offset 258048 +8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 8192/8192 bytes at offset 253952 +8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +No errors were found on the image. + +== verifying patterns (4) == +read 61440/61440 bytes at offset 0 +60 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 4096/4096 bytes at offset 61440 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 8192/8192 bytes at offset 65536 +8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 4096/4096 bytes at offset 73728 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 4096/4096 bytes at offset 77824 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 172032/172032 bytes at offset 81920 +168 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 8192/8192 bytes at offset 253952 +8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 4096/4096 bytes at offset 262144 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 65536/65536 bytes at offset 266240 +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +== re-zeroing overwritten area == +wrote 196608/196608 bytes at offset 65536 +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +No errors were found on the image. + +== verifying patterns (5) == +read 61440/61440 bytes at offset 0 +60 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 4096/4096 bytes at offset 61440 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 196608/196608 bytes at offset 65536 +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 4096/4096 bytes at offset 262144 +4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 259072/259072 bytes at offset 266240 +253 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 13312/13312 bytes at offset 525312 +13 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 509952/509952 bytes at offset 538624 +498 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +*** done diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group index af34482c79..5934829d3f 100644 --- a/tests/qemu-iotests/group +++ b/tests/qemu-iotests/group @@ -40,3 +40,4 @@ 031 rw auto quick 032 rw auto 033 rw auto +034 rw auto backing -- 2.11.0