On 02/02/2015 22:40, Max Reitz wrote: > When the drive-mirror block job is completed, it will call bdrv_swap() > on the source and the target BDS; this should obviously not result in a > segmentation fault. > > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > tests/qemu-iotests/094 | 81 > ++++++++++++++++++++++++++++++++++++++++++++++ > tests/qemu-iotests/094.out | 11 +++++++ > tests/qemu-iotests/group | 1 + > 3 files changed, 93 insertions(+) > create mode 100755 tests/qemu-iotests/094 > create mode 100644 tests/qemu-iotests/094.out > > diff --git a/tests/qemu-iotests/094 b/tests/qemu-iotests/094 > new file mode 100755 > index 0000000..27a2be2 > --- /dev/null > +++ b/tests/qemu-iotests/094 > @@ -0,0 +1,81 @@ > +#!/bin/bash > +# > +# Test case for drive-mirror to NBD (especially bdrv_swap() on NBD BDS) > +# > +# 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=mre...@redhat.com > + > +seq="$(basename $0)" > +echo "QA output created by $seq" > + > +here="$PWD" > +tmp=/tmp/$$ > +status=1 # failure is the default! > + > +trap "exit \$status" 0 1 2 3 15 > + > +# get standard environment, filters and checks > +. ./common.rc > +. ./common.filter > +. ./common.qemu > + > +_supported_fmt generic > +_supported_proto nbd > +_supported_os Linux > +_unsupported_imgopts "subformat=monolithicFlat" > "subformat=twoGbMaxExtentFlat" > + > +_make_test_img 64M > +$QEMU_IMG create -f $IMGFMT "$TEST_DIR/source.$IMGFMT" 64M | > _filter_img_create > + > +_launch_qemu -drive > if=none,id=src,file="$TEST_DIR/source.$IMGFMT",format=raw \ > + -nodefaults > + > +_send_qemu_cmd $QEMU_HANDLE \ > + "{'execute': 'qmp_capabilities'}" \ > + 'return' > + > +# 'format': 'nbd' is not actually "correct", but this is probably the only > way > +# to test bdrv_swap() on an NBD BDS > +_send_qemu_cmd $QEMU_HANDLE \ > + "{'execute': 'drive-mirror', > + 'arguments': {'device': 'src', > + 'target': '$TEST_IMG', > + 'format': 'nbd', > + 'sync':'full', > + 'mode':'existing'}}" \ > + 'BLOCK_JOB_READY' > + > +_send_qemu_cmd $QEMU_HANDLE \ > + "{'execute': 'block-job-complete', > + 'arguments': {'device': 'src'}}" \ > + 'BLOCK_JOB_COMPLETE' > + > +_send_qemu_cmd $QEMU_HANDLE \ > + "{'execute': 'quit'}" \ > + 'return' > + > +wait=1 _cleanup_qemu > + > +_cleanup_test_img > +rm -f "$TEST_DIR/source.$IMGFMT" > + > +# success, all done > +echo '*** done' > +rm -f $seq.full > +status=0 > diff --git a/tests/qemu-iotests/094.out b/tests/qemu-iotests/094.out > new file mode 100644 > index 0000000..b66dc07 > --- /dev/null > +++ b/tests/qemu-iotests/094.out > @@ -0,0 +1,11 @@ > +QA output created by 094 > +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 > +Formatting 'TEST_DIR/source.IMGFMT', fmt=IMGFMT size=67108864 > +{"return": {}} > +{"return": {}} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": > "BLOCK_JOB_READY", "data": {"device": "src", "len": 67108864, "offset": > 67108864, "speed": 0, "type": "mirror"}} > +{"return": {}} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": > "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 67108864, "offset": > 67108864, "speed": 0, "type": "mirror"}} > +{"return": {}} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": > "SHUTDOWN"} > +*** done > diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group > index 4b2b93b..6e2447a 100644 > --- a/tests/qemu-iotests/group > +++ b/tests/qemu-iotests/group > @@ -99,6 +99,7 @@ > 090 rw auto quick > 091 rw auto > 092 rw auto quick > +094 rw auto quick > 095 rw auto quick > 097 rw auto backing > 098 rw auto backing quick >
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>