aef58bdc1e
Both tests require the test image to have a specific size; this cannot be guaranteed by vpc (unless tuning the test specifically for that format). It is safe to exclude vpc from 004 because what is tested there is implemented in a generic part in the block layer and not format-specific. It is safe to exclude vpc from 104 because for vpc basically every image size is "unaligned", so if that would break at some point in time, we would quickly notice just by running the generic tests. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
105 lines
2.3 KiB
Bash
Executable File
105 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Make sure we can't read and write outside of the image size.
|
|
#
|
|
# Copyright (C) 2009 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 <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
# creator
|
|
owner=hch@lst.de
|
|
|
|
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 raw qcow qcow2 qed vdi vmdk vhdx
|
|
_supported_proto generic
|
|
_supported_os Linux
|
|
|
|
|
|
size=128M
|
|
pre_offset=127M
|
|
past_offset=140M
|
|
|
|
_make_test_img $size
|
|
|
|
echo
|
|
echo "write before image boundary"
|
|
$QEMU_IO -c "write $pre_offset 1M" "$TEST_IMG" | _filter_qemu_io
|
|
|
|
echo
|
|
echo "write into image boundary"
|
|
$QEMU_IO -c "write $pre_offset 4M" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "write at image boundary"
|
|
$QEMU_IO -c "write $size 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "write past image boundary"
|
|
$QEMU_IO -c "write $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "pwrite past image boundary"
|
|
$QEMU_IO -c "write -p $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "writev past image boundary"
|
|
$QEMU_IO -c "writev $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "read before image boundary"
|
|
$QEMU_IO -c "read $pre_offset 1M" "$TEST_IMG" | _filter_qemu_io
|
|
|
|
echo
|
|
echo "read into image boundary"
|
|
$QEMU_IO -c "read $pre_offset 4M" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "read at image boundary"
|
|
$QEMU_IO -c "read $size 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "read past image boundary"
|
|
$QEMU_IO -c "read $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "pread past image boundary"
|
|
$QEMU_IO -c "read -p $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "readv past image boundary"
|
|
$QEMU_IO -c "readv $past_offset 4096" "$TEST_IMG"
|
|
|
|
|
|
# success, all done
|
|
echo "*** done"
|
|
rm -f $seq.full
|
|
status=0
|