[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/3] iotests: Add test for drive-mirror with NBD
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 3/3] iotests: Add test for drive-mirror with NBD target |
Date: |
Tue, 03 Feb 2015 09:38:41 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
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 <address@hidden>
> ---
> 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
> address@hidden
> +
> +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 <address@hidden>