提交 393aac16 编写于 作者: P Peter Maydell

Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2018-11-19' into staging

nbd patches for 2018-11-19

Add iotest coverage for NBD connections using TLS, including
a couple of code fixes that it pointed out

- Mao Zhongyi: 0/3 Do some cleaning work in qemu-iotests
- Daniel P. Berrangé: io: return 0 for EOF in TLS session read after shutdown
- Daniel P. Berrangé: 0/6 Misc fixes to NBD
- Eric Blake: iotests: Drop use of bash keyword 'function'

# gpg: Signature made Mon 19 Nov 2018 17:43:32 GMT
# gpg:                using RSA key A7A16B4A2527436A
# gpg: Good signature from "Eric Blake <eblake@redhat.com>"
# gpg:                 aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>"
# gpg:                 aka "[jpeg image of size 6874]"
# Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A

* remotes/ericb/tags/pull-nbd-2018-11-19:
  iotests: Drop use of bash keyword 'function'
  iotests: Also test I/O over NBD TLS
  tests: exercise NBD server in TLS mode
  tests: add iotests helpers for dealing with TLS certificates
  tests: check if qemu-nbd is still alive before waiting
  tests: pull qemu-nbd iotest helpers into common.nbd file
  io: return 0 for EOF in TLS session read after shutdown
  nbd/server: Ignore write errors when replying to NBD_OPT_ABORT
  nbd: fix whitespace in server error message
  qemu-iotests: Modern shell scripting (use $() instead of ``)
  qemu-iotests: convert `pwd` and $(pwd) to $PWD
  qemu-iotests: remove unused variable 'here'
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
......@@ -878,7 +878,7 @@ Linux)
vhost_crypto="yes"
vhost_scsi="yes"
vhost_vsock="yes"
QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
supported_os="yes"
libudev="yes"
;;
......
......@@ -473,6 +473,9 @@ qcrypto_tls_session_read(QCryptoTLSSession *session,
case GNUTLS_E_INTERRUPTED:
errno = EINTR;
break;
case GNUTLS_E_PREMATURE_TERMINATION:
errno = ECONNABORTED;
break;
default:
errno = EIO;
break;
......
......@@ -48,6 +48,7 @@ struct QIOChannelTLS {
QIOChannel parent;
QIOChannel *master;
QCryptoTLSSession *session;
QIOChannelShutdown shutdown;
};
/**
......
......@@ -51,9 +51,9 @@ enum QIOChannelFeature {
typedef enum QIOChannelShutdown QIOChannelShutdown;
enum QIOChannelShutdown {
QIO_CHANNEL_SHUTDOWN_BOTH,
QIO_CHANNEL_SHUTDOWN_READ,
QIO_CHANNEL_SHUTDOWN_WRITE,
QIO_CHANNEL_SHUTDOWN_READ = 1,
QIO_CHANNEL_SHUTDOWN_WRITE = 2,
QIO_CHANNEL_SHUTDOWN_BOTH = 3,
};
typedef gboolean (*QIOChannelFunc)(QIOChannel *ioc,
......
......@@ -275,6 +275,9 @@ static ssize_t qio_channel_tls_readv(QIOChannel *ioc,
} else {
return QIO_CHANNEL_ERR_BLOCK;
}
} else if (errno == ECONNABORTED &&
(tioc->shutdown & QIO_CHANNEL_SHUTDOWN_READ)) {
return 0;
}
error_setg_errno(errp, errno,
......@@ -357,6 +360,8 @@ static int qio_channel_tls_shutdown(QIOChannel *ioc,
{
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
tioc->shutdown |= how;
return qio_channel_shutdown(tioc->master, how, errp);
}
......
......@@ -1134,12 +1134,16 @@ static int nbd_negotiate_options(NBDClient *client, uint16_t myflags,
return -EINVAL;
default:
ret = nbd_opt_drop(client, NBD_REP_ERR_TLS_REQD, errp,
"Option 0x%" PRIx32
"not permitted before TLS", option);
/* Let the client keep trying, unless they asked to
* quit. In this mode, we've already sent an error, so
* we can't ack the abort. */
* quit. Always try to give an error back to the
* client; but when replying to OPT_ABORT, be aware
* that the client may hang up before receiving the
* error, in which case we are fine ignoring the
* resulting EPIPE. */
ret = nbd_opt_drop(client, NBD_REP_ERR_TLS_REQD,
option == NBD_OPT_ABORT ? NULL : errp,
"Option 0x%" PRIx32
" not permitted before TLS", option);
if (option == NBD_OPT_ABORT) {
return 1;
}
......
......@@ -17,7 +17,7 @@
// --keep-comments --in-place \
// --use-gitgrep --dir target
//
// $ docker run --rm -v `pwd`:`pwd` -w `pwd` philmd/coccinelle \
// $ docker run --rm -v $PWD:$PWD -w $PWD philmd/coccinelle \
// --macro-file scripts/cocci-macro-file.h \
// --sp-file scripts/coccinelle/tcg_gen_extract.cocci \
// --keep-comments --in-place \
......
......@@ -5,9 +5,9 @@ if [ "$#" -ne 0 ]; then
FORMAT_LIST="$@"
fi
export QEMU_PROG="$(pwd)/x86_64-softmmu/qemu-system-x86_64"
export QEMU_IMG_PROG="$(pwd)/qemu-img"
export QEMU_IO_PROG="$(pwd)/qemu-io"
export QEMU_PROG="$PWD/x86_64-softmmu/qemu-system-x86_64"
export QEMU_IMG_PROG="$PWD/qemu-img"
export QEMU_IO_PROG="$PWD/qemu-io"
if [ ! -x $QEMU_PROG ]; then
echo "'make check-block' requires qemu-system-x86_64"
......
......@@ -24,7 +24,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -27,7 +27,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -26,7 +26,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -26,7 +26,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -26,7 +26,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hch@lst.de
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -26,7 +26,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=stefanha@linux.vnet.ibm.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=stefanha@linux.vnet.ibm.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -27,7 +27,6 @@ owner=stefanha@linux.vnet.ibm.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -26,7 +26,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=pbonzini@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -50,7 +49,7 @@ echo
echo "creating image"
_make_test_img $size
function generate_requests() {
generate_requests() {
for i in $(seq 0 63); do
echo "aio_write ${i}M 512"
echo "aio_write ${i}M 512"
......
......@@ -27,7 +27,6 @@ owner=stefanha@linux.vnet.ibm.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -55,7 +54,7 @@ TEST_IMG="$TEST_IMG.base"
_make_test_img $size
function backing_io()
backing_io()
{
local offset=$1
local sectors=$2
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -52,7 +51,7 @@ TEST_IMG="$TEST_IMG.base"
_make_test_img $size
function backing_io()
backing_io()
{
local offset=$1
local sectors=$2
......@@ -77,7 +76,7 @@ _make_test_img -b "$TEST_IMG.base" 6G
echo
echo "== Some concurrent requests touching the same cluster =="
function overlay_io()
overlay_io()
{
# Start with a request touching two clusters
echo aio_write -P 0x80 2020k 80k
......@@ -103,7 +102,7 @@ overlay_io | $QEMU_IO "$TEST_IMG" | _filter_qemu_io |\
echo
echo "== Verify image content =="
function verify_io()
verify_io()
{
echo read -P 31 2016k 4k
echo read -P 0x80 2020k 80k
......
......@@ -27,7 +27,6 @@ owner=stefanha@linux.vnet.ibm.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -49,7 +48,7 @@ echo "== creating backing file for COW tests =="
_make_test_img $size
function backing_io()
backing_io()
{
local offset=$1
local sectors=$2
......@@ -74,7 +73,7 @@ _make_test_img -b "$TEST_IMG.base" 6G
echo
echo "== Some concurrent requests touching the same cluster =="
function overlay_io()
overlay_io()
{
# Allocate middle of cluster 1, then write to somewhere before and after it
cat <<EOF
......@@ -190,7 +189,7 @@ overlay_io | $QEMU_IO blkdebug::"$TEST_IMG" | _filter_qemu_io |\
echo
echo "== Verify image content =="
function verify_io()
verify_io()
{
if ($QEMU_IMG info -U -f "$IMGFMT" "$TEST_IMG" | grep "compat: 0.10" > /dev/null); then
# For v2 images, discarded clusters are read from the backing file
......
......@@ -25,7 +25,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -46,7 +45,7 @@ size=128M
_make_test_img $size
function qemu_io_cmds()
qemu_io_cmds()
{
cat <<EOF
write -P 0x66 0 320k
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -41,13 +40,13 @@ _supported_fmt qcow2
_supported_proto file
_supported_os Linux
function filter_test_dir()
filter_test_dir()
{
sed -e "s#$IMGPROTO:$TEST_DIR#TEST_DIR#g" \
-e "s#$TEST_DIR#TEST_DIR#g"
}
function test_qemu_img()
test_qemu_img()
{
echo qemu-img "$@" | filter_test_dir
$QEMU_IMG "$@" 2>&1 | filter_test_dir
......
......@@ -24,7 +24,6 @@ owner=pbonzini@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -44,7 +43,7 @@ _supported_os Linux
# other than refcount_bits=16
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
function do_run_qemu()
do_run_qemu()
{
echo Testing: "$@"
(
......@@ -58,7 +57,7 @@ function do_run_qemu()
echo
}
function run_qemu()
run_qemu()
{
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu |
_filter_generated_node_ids | _filter_hmp
......
......@@ -24,7 +24,6 @@ owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -26,58 +26,21 @@ owner=xiawenc@linux.vnet.ibm.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
nbd_unix_socket=$TEST_DIR/test_qemu_nbd_socket
nbd_snapshot_img="nbd:unix:$nbd_unix_socket"
rm -f "${TEST_DIR}/qemu-nbd.pid"
_cleanup_nbd()
{
local NBD_SNAPSHOT_PID
if [ -f "${TEST_DIR}/qemu-nbd.pid" ]; then
read NBD_SNAPSHOT_PID < "${TEST_DIR}/qemu-nbd.pid"
rm -f "${TEST_DIR}/qemu-nbd.pid"
if [ -n "$NBD_SNAPSHOT_PID" ]; then
kill "$NBD_SNAPSHOT_PID"
fi
fi
rm -f "$nbd_unix_socket"
}
_wait_for_nbd()
{
for ((i = 0; i < 300; i++))
do
if [ -r "$nbd_unix_socket" ]; then
return
fi
sleep 0.1
done
echo "Failed in check of unix socket created by qemu-nbd"
exit 1
}
converted_image=$TEST_IMG.converted
_export_nbd_snapshot()
{
_cleanup_nbd
$QEMU_NBD -v -t -k "$nbd_unix_socket" "$TEST_IMG" -l $1 &
_wait_for_nbd
nbd_server_start_unix_socket "$TEST_IMG" -l $1
}
_export_nbd_snapshot1()
{
_cleanup_nbd
$QEMU_NBD -v -t -k "$nbd_unix_socket" "$TEST_IMG" -l snapshot.name=$1 &
_wait_for_nbd
nbd_server_start_unix_socket "$TEST_IMG" -l snapshot.name=$1
}
_cleanup()
{
_cleanup_nbd
nbd_server_stop
_cleanup_test_img
rm -f "$converted_image"
}
......@@ -87,6 +50,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.rc
. ./common.filter
. ./common.pattern
. ./common.nbd
_supported_fmt qcow2
_supported_proto file
......@@ -95,6 +59,10 @@ _require_command QEMU_NBD
# Internal snapshots are (currently) impossible with refcount_bits=1
_unsupported_imgopts 'refcount_bits=1[^0-9]'
nbd_snapshot_img="nbd:unix:$nbd_unix_socket"
converted_image=$TEST_IMG.converted
# Use -f raw instead of -f $IMGFMT for the NBD connection
QEMU_IO_NBD="$QEMU_IO -f raw --cache=$CACHEMODE"
......
......@@ -24,7 +24,6 @@ owner=famz@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=mreitz@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=alex@alex.org.uk
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=jcody@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
# get standard environment, filters and checks
......@@ -37,7 +36,7 @@ _supported_os Linux
# Because anything other than 16 would change the output of query-block
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
function do_run_qemu()
do_run_qemu()
{
echo Testing: "$@"
$QEMU -nographic -qmp-pretty stdio -serial none "$@"
......@@ -53,7 +52,7 @@ _filter_qmp_events()
| tr '\t' '\n'
}
function run_qemu()
run_qemu()
{
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp | _filter_qemu \
| _filter_actual_image_size \
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=jcody@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......@@ -41,14 +40,14 @@ _supported_fmt qcow2
_supported_proto file
_supported_os Linux
function do_run_qemu()
do_run_qemu()
{
echo Testing: "$@" | _filter_imgfmt
$QEMU -nographic -qmp stdio -serial none "$@"
echo
}
function run_qemu()
run_qemu()
{
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp | _filter_qemu_io
}
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -49,7 +48,7 @@ _make_test_img $size
echo
echo "== Some concurrent requests involving RMW =="
function test_io()
test_io()
{
echo "open -o driver=$IMGFMT,file.align=4k blkdebug::$TEST_IMG"
# A simple RMW request
......@@ -194,7 +193,7 @@ test_io | $QEMU_IO | _filter_qemu_io | \
echo
echo "== Verify image content =="
function verify_io()
verify_io()
{
# A simple RMW request
echo read -P 0 0 0x200
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hutao@cn.fujitsu.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=benoit@irqsave.net
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -43,14 +42,14 @@ _supported_fmt raw
_supported_proto file
_supported_os Linux
function do_run_qemu()
do_run_qemu()
{
echo Testing: "$@" | _filter_imgfmt
$QEMU -nographic -qmp stdio -serial none "$@"
echo
}
function run_qemu()
run_qemu()
{
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp\
| _filter_qemu_io | _filter_generated_node_ids
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -41,7 +40,7 @@ _supported_fmt qcow2
_supported_proto file nfs
_supported_os Linux
function run_qemu_img()
run_qemu_img()
{
echo
echo Testing: "$@" | _filter_testdir
......
......@@ -24,7 +24,6 @@ owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=jcody@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -29,7 +29,6 @@ owner=jcody@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
snapshot_virt0="snapshot-v0.qcow2"
......@@ -61,7 +60,7 @@ _supported_os Linux
# ${1}: unique identifier for the snapshot filename
function create_single_snapshot()
create_single_snapshot()
{
cmd="{ 'execute': 'blockdev-snapshot-sync',
'arguments': { 'device': 'virtio0',
......@@ -71,7 +70,7 @@ function create_single_snapshot()
}
# ${1}: unique identifier for the snapshot filename
function create_group_snapshot()
create_group_snapshot()
{
cmd="{ 'execute': 'transaction', 'arguments':
{'actions': [
......@@ -89,7 +88,7 @@ function create_group_snapshot()
# ${1}: unique identifier for the snapshot filename
# ${2}: extra_params to the blockdev-add command
# ${3}: filename
function do_blockdev_add()
do_blockdev_add()
{
cmd="{ 'execute': 'blockdev-add', 'arguments':
{ 'driver': 'qcow2', 'node-name': 'snap_${1}', ${2}
......@@ -100,7 +99,7 @@ function do_blockdev_add()
}
# ${1}: unique identifier for the snapshot filename
function add_snapshot_image()
add_snapshot_image()
{
base_image="${TEST_DIR}/$((${1}-1))-${snapshot_virt0}"
snapshot_file="${TEST_DIR}/${1}-${snapshot_virt0}"
......@@ -111,7 +110,7 @@ function add_snapshot_image()
# ${1}: unique identifier for the snapshot filename
# ${2}: expected response, defaults to 'return'
function blockdev_snapshot()
blockdev_snapshot()
{
cmd="{ 'execute': 'blockdev-snapshot',
'arguments': { 'node': 'virtio0',
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......@@ -41,7 +40,7 @@ _supported_fmt qcow2 raw
_supported_proto file
_supported_os Linux
function run_qemu_img()
run_qemu_img()
{
echo
echo Testing: "$@" | _filter_testdir
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
# get standard environment, filters and checks
......@@ -35,14 +34,14 @@ _supported_fmt qcow2
_supported_proto file
_supported_os Linux
function do_run_qemu()
do_run_qemu()
{
echo Testing: "$@"
$QEMU -nographic -qmp stdio -serial none "$@"
echo
}
function run_qemu()
run_qemu()
{
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
| _filter_qemu | _filter_imgfmt \
......@@ -103,7 +102,7 @@ echo === aio=native without O_DIRECT ===
echo
# Skip this test if AIO is not enabled in this build
function run_qemu_filter_aio()
run_qemu_filter_aio()
{
run_qemu "$@" | \
sed -e 's/is not supported in this build/it requires cache.direct=on, which was not specified/'
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -26,7 +26,6 @@ owner=jcody@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
MIG_FIFO="${TEST_DIR}/migrate"
......
......@@ -24,7 +24,6 @@ owner=kwolf@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -27,7 +27,6 @@ owner=jcody@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......@@ -46,12 +45,12 @@ _supported_os Linux
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat" \
"subformat=twoGbMaxExtentSparse"
function do_run_qemu()
do_run_qemu()
{
$QEMU -nographic -qmp stdio -serial none "$@"
}
function run_qemu()
run_qemu()
{
# Get the "file": "foo" entry ($foo may only contain escaped double quotes,
# which is how we can extract it)
......@@ -60,7 +59,7 @@ function run_qemu()
| sed -e 's/^.*"file": "\(\(\\"\|[^"]\)*\)".*$/\1/' -e 's/\\"/"/g'
}
function test_qemu()
test_qemu()
{
run_qemu -drive "if=none,id=drv0,$1" <<EOF
{ 'execute': 'qmp_capabilities' }
......
......@@ -24,7 +24,6 @@ owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq=$(basename $0)
echo "QA output created by $seq"
here=$PWD
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq=$(basename $0)
echo "QA output created by $seq"
here=$PWD
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=hutao@cn.fujitsu.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
trap "exit \$status" 0 1 2 3 15
......
......@@ -24,7 +24,6 @@ owner=famz@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq=$(basename $0)
echo "QA output created by $seq"
here=$PWD
status=1 # failure is the default!
_cleanup()
......
......@@ -24,7 +24,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
......@@ -25,7 +25,6 @@ owner=mreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
here="$PWD"
status=1 # failure is the default!
_cleanup()
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册