Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (2.3 kB)

1
#!/bin/sh
2
#
3
# Make sure we can't read and write outside of the image size.
4
#
5
# Copyright (C) 2009 Red Hat, Inc.
6
#
7
# This program is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 2 of the License, or
10
# (at your option) any later version.
11
#
12
# This program is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with this program; if not, write to the Free Software
19
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
20
# USA
21
#
22

    
23
# creator
24
owner=hch@lst.de
25

    
26
seq=`basename $0`
27
echo "QA output created by $seq"
28

    
29
here=`pwd`
30
tmp=/tmp/$$
31
status=1	# failure is the default!
32

    
33
_cleanup()
34
{
35
	_cleanup_test_img
36
}
37
trap "_cleanup; exit \$status" 0 1 2 3 15
38

    
39
# get standard environment, filters and checks
40
. ./common.rc
41
. ./common.filter
42

    
43
_supported_fmt generic
44
_supported_os Linux
45

    
46

    
47
size=128M
48
pre_offset=127M
49
past_offset=140M
50

    
51
_make_test_img $size
52

    
53
echo
54
echo "write before image boundary"
55
$QEMU_IO -c "write $pre_offset 1M" $TEST_IMG | _filter_qemu_io
56

    
57
echo
58
echo "write into image boundary"
59
$QEMU_IO -c "write $pre_offset 4M" $TEST_IMG
60

    
61
echo
62
echo "write at image boundary"
63
$QEMU_IO -c "write $size 4096" $TEST_IMG
64

    
65
echo
66
echo "write past image boundary"
67
$QEMU_IO -c "write $past_offset 4096" $TEST_IMG
68

    
69
echo
70
echo "pwrite past image boundary"
71
$QEMU_IO -c "write -p $past_offset 4096" $TEST_IMG
72

    
73
echo
74
echo "writev past image boundary"
75
$QEMU_IO -c "writev $past_offset 4096" $TEST_IMG
76

    
77
echo
78
echo "read before image boundary"
79
$QEMU_IO -c "read $pre_offset 1M" $TEST_IMG | _filter_qemu_io
80

    
81
echo
82
echo "read into image boundary"
83
$QEMU_IO -c "read $pre_offset 4M" $TEST_IMG
84

    
85
echo
86
echo "read at image boundary"
87
$QEMU_IO -c "read $size 4096" $TEST_IMG
88

    
89
echo
90
echo "read past image boundary"
91
$QEMU_IO -c "read $past_offset 4096" $TEST_IMG
92

    
93
echo
94
echo "pread past image boundary"
95
$QEMU_IO -c "read -p $past_offset 4096" $TEST_IMG
96

    
97
echo
98
echo "readv past image boundary"
99
$QEMU_IO -c "readv $past_offset 4096" $TEST_IMG
100

    
101

    
102
# success, all done
103
echo "*** done"
104
rm -f $seq.full
105
status=0