[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 4/4] iotests: Test qemu-img convert -S 0 beha
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH v2 4/4] iotests: Test qemu-img convert -S 0 behavior |
Date: |
Fri, 25 Mar 2016 14:43:32 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, 03/24 23:34, Max Reitz wrote:
> Passing -S 0 to qemu-img convert should result in all source data being
> copied to the output, even if that source data is known to be 0. The
> output image should therefore have exactly the same size on disk as an
> image which we explicitly filled with data.
>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> tests/qemu-iotests/150 | 105
> +++++++++++++++++++++++++++++++++++++++++++++
> tests/qemu-iotests/150.out | 14 ++++++
> tests/qemu-iotests/group | 1 +
> 3 files changed, 120 insertions(+)
> create mode 100755 tests/qemu-iotests/150
> create mode 100644 tests/qemu-iotests/150.out
>
> diff --git a/tests/qemu-iotests/150 b/tests/qemu-iotests/150
> new file mode 100755
> index 0000000..97d2a35
> --- /dev/null
> +++ b/tests/qemu-iotests/150
> @@ -0,0 +1,105 @@
> +#!/bin/bash
> +#
> +# Test that qemu-img convert -S 0 fully allocates the target image
> +#
> +# Copyright (C) 2016 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!
> +
> +_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 generic
> +_supported_proto file
> +_supported_os Linux
> +
> +
> +on_disk_size()
> +{
> + du "$@" | sed -e 's/\t\+.*//'
> +}
> +
> +
> +img_size=1048576
> +
> +
> +echo
> +echo '=== Comparing empty image against sparse conversion ==='
> +echo
> +
> +_make_test_img $img_size
> +
> +empty_size=$(on_disk_size "$TEST_IMG")
> +
> +
> +$QEMU_IMG_PROG convert -O "$IMGFMT" -S 512 \
> + "json:{ 'driver': 'null-co', 'size': $img_size, 'read-zeroes': true }" \
> + "$TEST_IMG"
> +
> +sparse_convert_size=$(on_disk_size "$TEST_IMG")
> +
> +
> +if [ "$empty_size" -eq "$sparse_convert_size" ]; then
> + echo 'Equal image size'
> +else
> + echo 'Different image size'
> +fi
> +
> +
> +echo
> +echo '=== Comparing full image against non-sparse conversion ==='
> +echo
> +
> +_make_test_img $img_size
> +$QEMU_IO -c "write 0 $img_size" "$TEST_IMG" | _filter_qemu_io
> +
> +full_size=$(on_disk_size "$TEST_IMG")
> +
> +
> +$QEMU_IMG convert -O "$IMGFMT" -S 0 \
> + "json:{ 'driver': 'null-co', 'size': $img_size, 'read-zeroes': true }" \
> + "$TEST_IMG"
> +
> +non_sparse_convert_size=$(on_disk_size "$TEST_IMG")
> +
> +
> +if [ "$full_size" -eq "$non_sparse_convert_size" ]; then
> + echo 'Equal image size'
> +else
> + echo 'Different image size'
> +fi
> +
> +
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0
> diff --git a/tests/qemu-iotests/150.out b/tests/qemu-iotests/150.out
> new file mode 100644
> index 0000000..2d29da1
> --- /dev/null
> +++ b/tests/qemu-iotests/150.out
> @@ -0,0 +1,14 @@
> +QA output created by 150
> +
> +=== Comparing empty image against sparse conversion ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
> +Equal image size
> +
> +=== Comparing full image against non-sparse conversion ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
> +wrote 1048576/1048576 bytes at offset 0
> +1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Equal image size
> +*** done
> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index faf0f21..87e5ea4 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -150,3 +150,4 @@
> 145 auto quick
> 146 auto quick
> 148 rw auto quick
> +150 rw auto quick
> --
> 2.7.4
>
Reviewed-by: Fam Zheng <address@hidden>
- [Qemu-devel] [PATCH v2 0/4] qemu-img: Fix preallocation with -S 0 for convert, Max Reitz, 2016/03/24
- [Qemu-devel] [PATCH v2 1/4] qemu-img: Fix preallocation with -S 0 for convert, Max Reitz, 2016/03/24
- [Qemu-devel] [PATCH v2 3/4] block/null-{co, aio}: Implement get_block_status(), Max Reitz, 2016/03/24
- [Qemu-devel] [PATCH v2 2/4] block/null-{co, aio}: Allow reading zeroes, Max Reitz, 2016/03/24
- [Qemu-devel] [PATCH v2 4/4] iotests: Test qemu-img convert -S 0 behavior, Max Reitz, 2016/03/24
- Re: [Qemu-devel] [PATCH v2 4/4] iotests: Test qemu-img convert -S 0 behavior,
Fam Zheng <=
- Re: [Qemu-devel] [PATCH v2 0/4] qemu-img: Fix preallocation with -S 0 for convert, Kevin Wolf, 2016/03/29