iotests: Add preallocated resize test for raw

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20170613202107.10125-16-mreitz@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Max Reitz 2017-06-13 22:21:06 +02:00
parent 772d1f973f
commit a2c7e08212
3 changed files with 143 additions and 0 deletions

92
tests/qemu-iotests/106 Executable file
View File

@ -0,0 +1,92 @@
#!/bin/bash
#
# Test preallocated resize of raw images
#
# Copyright (C) 2017 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
status=1 # failure is the default!
_cleanup()
{
_cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15
# get standard environment and filters
. ./common.rc
. ./common.filter
_supported_fmt raw
_supported_proto file
_supported_os Linux
# in kB
CREATION_SIZE=128
GROWTH_SIZE=256
echo '=== Testing image growth ==='
for create_mode in off falloc full; do
for growth_mode in off falloc full; do
echo
echo "--- create_mode=$create_mode growth_mode=$growth_mode ---"
IMGOPTS="preallocation=$create_mode" _make_test_img ${CREATION_SIZE}K
$QEMU_IMG resize -f "$IMGFMT" --preallocation=$growth_mode "$TEST_IMG" +${GROWTH_SIZE}K
expected_size=0
if [ $create_mode != off ]; then
expected_size=$CREATION_SIZE
fi
if [ $growth_mode != off ]; then
expected_size=$((expected_size + $GROWTH_SIZE))
fi
actual_size=$($QEMU_IMG info -f "$IMGFMT" "$TEST_IMG" | grep 'disk size')
actual_size=$(echo "$actual_size" | sed -e 's/^[^0-9]*\([0-9]\+\).*$/\1/')
# The actual size may exceed the expected size, depending on the file
# system. Therefore we just test that the actual size is at least what
# we expect.
if [ $actual_size -lt $expected_size ]; then
echo "ERROR: Image should have at least ${expected_size}K, but has ${actual_size}K"
fi
done
done
echo
echo '=== Testing image shrinking ==='
# None of this should work except for "off", because other modes cannot be used
# for shrinking
for growth_mode in falloc full off; do
echo
echo "--- growth_mode=$growth_mode ---"
$QEMU_IMG resize -f "$IMGFMT" --preallocation=$growth_mode "$TEST_IMG" -${GROWTH_SIZE}K
done
# success, all done
echo '*** done'
rm -f $seq.full
status=0

View File

@ -0,0 +1,50 @@
QA output created by 106
=== Testing image growth ===
--- create_mode=off growth_mode=off ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=off
Image resized.
--- create_mode=off growth_mode=falloc ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=off
Image resized.
--- create_mode=off growth_mode=full ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=off
Image resized.
--- create_mode=falloc growth_mode=off ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=falloc
Image resized.
--- create_mode=falloc growth_mode=falloc ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=falloc
Image resized.
--- create_mode=falloc growth_mode=full ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=falloc
Image resized.
--- create_mode=full growth_mode=off ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=full
Image resized.
--- create_mode=full growth_mode=falloc ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=full
Image resized.
--- create_mode=full growth_mode=full ---
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 preallocation=full
Image resized.
=== Testing image shrinking ===
--- growth_mode=falloc ---
qemu-img: Preallocation can only be used for growing images
--- growth_mode=full ---
qemu-img: Preallocation can only be used for growing images
--- growth_mode=off ---
Image resized.
*** done

View File

@ -112,6 +112,7 @@
103 rw auto quick 103 rw auto quick
104 rw auto 104 rw auto
105 rw auto quick 105 rw auto quick
106 rw auto quick
107 rw auto quick 107 rw auto quick
108 rw auto quick 108 rw auto quick
109 rw auto 109 rw auto