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 <mre...@redhat.com> > --- > 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 > +owner=mre...@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 <f...@redhat.com>