Statistics
| Branch: | Revision:

root / tests / qemu-iotests / 004 @ 6bf19c94

History | View | Annotate | Download (2.3 kB)

1 6bf19c94 Christoph Hellwig
#!/bin/sh
2 6bf19c94 Christoph Hellwig
#
3 6bf19c94 Christoph Hellwig
# Make sure we can't read and write outside of the image size.
4 6bf19c94 Christoph Hellwig
#
5 6bf19c94 Christoph Hellwig
# Copyright (C) 2009 Red Hat, Inc.
6 6bf19c94 Christoph Hellwig
#
7 6bf19c94 Christoph Hellwig
# This program is free software; you can redistribute it and/or modify
8 6bf19c94 Christoph Hellwig
# it under the terms of the GNU General Public License as published by
9 6bf19c94 Christoph Hellwig
# the Free Software Foundation; either version 2 of the License, or
10 6bf19c94 Christoph Hellwig
# (at your option) any later version.
11 6bf19c94 Christoph Hellwig
#
12 6bf19c94 Christoph Hellwig
# This program is distributed in the hope that it will be useful,
13 6bf19c94 Christoph Hellwig
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14 6bf19c94 Christoph Hellwig
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 6bf19c94 Christoph Hellwig
# GNU General Public License for more details.
16 6bf19c94 Christoph Hellwig
#
17 6bf19c94 Christoph Hellwig
# You should have received a copy of the GNU General Public License
18 6bf19c94 Christoph Hellwig
# along with this program; if not, write to the Free Software
19 6bf19c94 Christoph Hellwig
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
20 6bf19c94 Christoph Hellwig
# USA
21 6bf19c94 Christoph Hellwig
#
22 6bf19c94 Christoph Hellwig
23 6bf19c94 Christoph Hellwig
# creator
24 6bf19c94 Christoph Hellwig
owner=hch@lst.de
25 6bf19c94 Christoph Hellwig
26 6bf19c94 Christoph Hellwig
seq=`basename $0`
27 6bf19c94 Christoph Hellwig
echo "QA output created by $seq"
28 6bf19c94 Christoph Hellwig
29 6bf19c94 Christoph Hellwig
here=`pwd`
30 6bf19c94 Christoph Hellwig
tmp=/tmp/$$
31 6bf19c94 Christoph Hellwig
status=1	# failure is the default!
32 6bf19c94 Christoph Hellwig
33 6bf19c94 Christoph Hellwig
_cleanup()
34 6bf19c94 Christoph Hellwig
{
35 6bf19c94 Christoph Hellwig
	_cleanup_test_img
36 6bf19c94 Christoph Hellwig
}
37 6bf19c94 Christoph Hellwig
trap "_cleanup; exit \$status" 0 1 2 3 15
38 6bf19c94 Christoph Hellwig
39 6bf19c94 Christoph Hellwig
# get standard environment, filters and checks
40 6bf19c94 Christoph Hellwig
. ./common.rc
41 6bf19c94 Christoph Hellwig
. ./common.filter
42 6bf19c94 Christoph Hellwig
43 6bf19c94 Christoph Hellwig
_supported_fmt generic
44 6bf19c94 Christoph Hellwig
_supported_os Linux
45 6bf19c94 Christoph Hellwig
46 6bf19c94 Christoph Hellwig
47 6bf19c94 Christoph Hellwig
size=128M
48 6bf19c94 Christoph Hellwig
pre_offset=127M
49 6bf19c94 Christoph Hellwig
past_offset=140M
50 6bf19c94 Christoph Hellwig
51 6bf19c94 Christoph Hellwig
_make_test_img $size
52 6bf19c94 Christoph Hellwig
53 6bf19c94 Christoph Hellwig
echo
54 6bf19c94 Christoph Hellwig
echo "write before image boundary"
55 6bf19c94 Christoph Hellwig
$QEMU_IO -c "write $pre_offset 1M" $TEST_IMG | _filter_qemu_io
56 6bf19c94 Christoph Hellwig
57 6bf19c94 Christoph Hellwig
echo
58 6bf19c94 Christoph Hellwig
echo "write into image boundary"
59 6bf19c94 Christoph Hellwig
$QEMU_IO -c "write $pre_offset 4M" $TEST_IMG
60 6bf19c94 Christoph Hellwig
61 6bf19c94 Christoph Hellwig
echo
62 6bf19c94 Christoph Hellwig
echo "write at image boundary"
63 6bf19c94 Christoph Hellwig
$QEMU_IO -c "write $size 4096" $TEST_IMG
64 6bf19c94 Christoph Hellwig
65 6bf19c94 Christoph Hellwig
echo
66 6bf19c94 Christoph Hellwig
echo "write past image boundary"
67 6bf19c94 Christoph Hellwig
$QEMU_IO -c "write $past_offset 4096" $TEST_IMG
68 6bf19c94 Christoph Hellwig
69 6bf19c94 Christoph Hellwig
echo
70 6bf19c94 Christoph Hellwig
echo "pwrite past image boundary"
71 6bf19c94 Christoph Hellwig
$QEMU_IO -c "write -p $past_offset 4096" $TEST_IMG
72 6bf19c94 Christoph Hellwig
73 6bf19c94 Christoph Hellwig
echo
74 6bf19c94 Christoph Hellwig
echo "writev past image boundary"
75 6bf19c94 Christoph Hellwig
$QEMU_IO -c "writev $past_offset 4096" $TEST_IMG
76 6bf19c94 Christoph Hellwig
77 6bf19c94 Christoph Hellwig
echo
78 6bf19c94 Christoph Hellwig
echo "read before image boundary"
79 6bf19c94 Christoph Hellwig
$QEMU_IO -c "read $pre_offset 1M" $TEST_IMG | _filter_qemu_io
80 6bf19c94 Christoph Hellwig
81 6bf19c94 Christoph Hellwig
echo
82 6bf19c94 Christoph Hellwig
echo "read into image boundary"
83 6bf19c94 Christoph Hellwig
$QEMU_IO -c "read $pre_offset 4M" $TEST_IMG
84 6bf19c94 Christoph Hellwig
85 6bf19c94 Christoph Hellwig
echo
86 6bf19c94 Christoph Hellwig
echo "read at image boundary"
87 6bf19c94 Christoph Hellwig
$QEMU_IO -c "read $size 4096" $TEST_IMG
88 6bf19c94 Christoph Hellwig
89 6bf19c94 Christoph Hellwig
echo
90 6bf19c94 Christoph Hellwig
echo "read past image boundary"
91 6bf19c94 Christoph Hellwig
$QEMU_IO -c "read $past_offset 4096" $TEST_IMG
92 6bf19c94 Christoph Hellwig
93 6bf19c94 Christoph Hellwig
echo
94 6bf19c94 Christoph Hellwig
echo "pread past image boundary"
95 6bf19c94 Christoph Hellwig
$QEMU_IO -c "read -p $past_offset 4096" $TEST_IMG
96 6bf19c94 Christoph Hellwig
97 6bf19c94 Christoph Hellwig
echo
98 6bf19c94 Christoph Hellwig
echo "readv past image boundary"
99 6bf19c94 Christoph Hellwig
$QEMU_IO -c "readv $past_offset 4096" $TEST_IMG
100 6bf19c94 Christoph Hellwig
101 6bf19c94 Christoph Hellwig
102 6bf19c94 Christoph Hellwig
# success, all done
103 6bf19c94 Christoph Hellwig
echo "*** done"
104 6bf19c94 Christoph Hellwig
rm -f $seq.full
105 6bf19c94 Christoph Hellwig
status=0