From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52602) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ajLTB-0002gA-Fn for qemu-devel@nongnu.org; Fri, 25 Mar 2016 02:43:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ajLTA-0001Ck-6C for qemu-devel@nongnu.org; Fri, 25 Mar 2016 02:43:41 -0400 Date: Fri, 25 Mar 2016 14:43:32 +0800 From: Fam Zheng Message-ID: <20160325064332.GD20431@ad.usersys.redhat.com> References: <1458858840-3859-1-git-send-email-mreitz@redhat.com> <1458858840-3859-5-git-send-email-mreitz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1458858840-3859-5-git-send-email-mreitz@redhat.com> Subject: Re: [Qemu-devel] [PATCH v2 4/4] iotests: Test qemu-img convert -S 0 behavior List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Reitz Cc: Kevin Wolf , qemu-devel@nongnu.org, qemu-block@nongnu.org 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 > --- > 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 . > +# > + > +# creator > +owner=mreitz@redhat.com > + > +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