提交 a2c7e082 编写于 作者: M Max Reitz

iotests: Add preallocated resize test for raw

Signed-off-by: NMax Reitz <mreitz@redhat.com>
Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
Message-id: 20170613202107.10125-16-mreitz@redhat.com
Signed-off-by: NMax Reitz <mreitz@redhat.com>
上级 772d1f97
#!/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
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
...@@ -112,6 +112,7 @@ ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册