xref: /qemu/tests/qemu-iotests/074 (revision b2a3cbb8)
1#!/usr/bin/env bash
2# group: rw auto quick
3##
4## qemu-img compare test (qcow2 only ones)
5##
6##
7## Copyright (C) 2013 Red Hat, Inc.
8##
9## This program is free software; you can redistribute it and/or modify
10## it under the terms of the GNU General Public License as published by
11## the Free Software Foundation; either version 2 of the License, or
12## (at your option) any later version.
13##
14## This program is distributed in the hope that it will be useful,
15## but WITHOUT ANY WARRANTY; without even the implied warranty of
16## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17## GNU General Public License for more details.
18##
19## You should have received a copy of the GNU General Public License
20## along with this program.  If not, see <http://www.gnu.org/licenses/>.
21##
22#
23# creator
24owner=fam@euphon.net
25
26seq=`basename $0`
27echo "QA output created by $seq"
28
29status=1        # failure is the default!
30
31_cleanup()
32{
33    echo "Cleanup"
34    _cleanup_test_img
35    _rm_test_img "${TEST_IMG2}"
36    rm -f "$TEST_DIR/blkdebug.conf"
37}
38trap "_cleanup; exit \$status" 0 1 2 3 15
39
40_compare()
41{
42    $QEMU_IMG compare "$@" "$TEST_IMG" "${TEST_IMG2}"
43    echo $?
44}
45
46# get standard environment, filters and checks
47. ./common.rc
48. ./common.filter
49. ./common.pattern
50
51_supported_fmt qcow2
52_supported_proto file
53_supported_os Linux
54# blkdebug can only inject errors on bs->file
55_unsupported_imgopts data_file
56
57# Setup test basic parameters
58TEST_IMG2=$TEST_IMG.2
59CLUSTER_SIZE=4096
60size=1024M
61
62# Test cluster allocated in one, with IO error
63cat > "$TEST_DIR/blkdebug.conf"<<EOF
64[inject-error]
65event = "read_aio"
66errno = "5"
67once ="off"
68EOF
69_make_test_img $size
70cp "$TEST_IMG" "$TEST_IMG2"
71io_pattern write 512 512 0 1 102
72TEST_IMG="blkdebug:$TEST_DIR/blkdebug.conf:$TEST_IMG" _compare 2>&1 |\
73    _filter_testdir | _filter_imgfmt
74
75# Test cluster allocated in one, with different sizes and IO error in the part
76# that exists only in one image
77cat > "$TEST_DIR/blkdebug.conf"<<EOF
78[inject-error]
79event = "read_aio"
80errno = "5"
81once ="off"
82EOF
83_make_test_img $size
84TEST_IMG="$TEST_IMG2" _make_test_img 0
85io_pattern write 512 512 0 1 102
86TEST_IMG="blkdebug:$TEST_DIR/blkdebug.conf:$TEST_IMG" _compare 2>&1 |\
87    _filter_testdir | _filter_imgfmt
88
89# Cleanup
90status=0
91