提交 f4e732a0 编写于 作者: M Max Reitz 提交者: Kevin Wolf

iotests: Test qemu-img convert -S 0 behavior

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: NMax Reitz <mreitz@redhat.com>
Reviewed-by: NFam Zheng <famz@redhat.com>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
上级 a9063927
#!/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=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
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
......@@ -151,3 +151,4 @@
146 auto quick
148 rw auto quick
149 rw auto sudo
150 rw auto quick
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册