提交 1a6e5979 编写于 作者: S Stefan Hajnoczi 提交者: Kevin Wolf

iotests: add O_DIRECT alignment probing test

This test case checks that image files can be opened even if I/O
produces EIO errors.  QEMU should not refuse opening failed disks since
the guest may be configured for multipath I/O where accessing failed
disks is expected.
Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
上级 22d182e8
#!/bin/bash
#
# Test that opening O_DIRECT succeeds when image file I/O produces EIO
#
# Copyright (C) 2015 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=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
devname="eiodev$$"
_setup_eiodev()
{
# This test should either be run as root or with passwordless sudo
for cmd in "" "sudo -n"; do
echo "0 $((1024 * 1024 * 1024 / 512)) error" | \
$cmd dmsetup create "$devname" 2>/dev/null
if [ "$?" -eq 0 ]; then
return
fi
done
_notrun "root privileges required to run dmsetup"
}
_cleanup_eiodev()
{
for cmd in "" "sudo -n"; do
$cmd dmsetup remove "$devname" 2>/dev/null
if [ "$?" -eq 0 ]; then
return
fi
done
}
_cleanup()
{
_cleanup_eiodev
}
trap "_cleanup; exit \$status" 0 1 2 3 15
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
_supported_fmt raw
_supported_proto file
_supported_os Linux
_setup_eiodev
TEST_IMG="/dev/mapper/$devname"
echo
echo "== reading from error device =="
# Opening image should succeed but the read operation should fail
$QEMU_IO --format "$IMGFMT" --nocache -c "read 0 65536" "$TEST_IMG" | _filter_qemu_io
# success, all done
echo "*** done"
rm -f $seq.full
status=0
QA output created by 128
== reading from error device ==
read failed: Input/output error
*** done
...@@ -121,3 +121,4 @@ ...@@ -121,3 +121,4 @@
114 rw auto quick 114 rw auto quick
116 rw auto quick 116 rw auto quick
123 rw auto quick 123 rw auto quick
128 rw auto quick
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册