109 lines
3.5 KiB
Diff
109 lines
3.5 KiB
Diff
From b4841fd40fefcffc99c4b52c8a06720edb4ef9ef Mon Sep 17 00:00:00 2001
|
|
From: Thomas Huth <thuth@redhat.com>
|
|
Date: Fri, 30 Aug 2019 12:56:28 +0100
|
|
Subject: [PATCH 10/10] iotests: Test allocate_first_block() with O_DIRECT
|
|
|
|
RH-Author: Thomas Huth <thuth@redhat.com>
|
|
Message-id: <20190830125628.23668-6-thuth@redhat.com>
|
|
Patchwork-id: 90212
|
|
O-Subject: [RHEL-8.1.0 qemu-kvm PATCH v2 5/5] iotests: Test allocate_first_block() with O_DIRECT
|
|
Bugzilla: 1738839
|
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
|
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
RH-Acked-by: David Hildenbrand <david@redhat.com>
|
|
|
|
From: Nir Soffer <nirsof@gmail.com>
|
|
|
|
Using block_resize we can test allocate_first_block() with file
|
|
descriptor opened with O_DIRECT, ensuring that it works for any size
|
|
larger than 4096 bytes.
|
|
|
|
Testing smaller sizes is tricky as the result depends on the filesystem
|
|
used for testing. For example on NFS any size will work since O_DIRECT
|
|
does not require any alignment.
|
|
|
|
Signed-off-by: Nir Soffer <nsoffer@redhat.com>
|
|
Reviewed-by: Max Reitz <mreitz@redhat.com>
|
|
Message-id: 20190827010528.8818-3-nsoffer@redhat.com
|
|
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
(cherry picked from commit 4656fb5ebbece8c7bbca0bef56bea882c94b9132)
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
tests/qemu-iotests/175 | 28 ++++++++++++++++++++++++++++
|
|
tests/qemu-iotests/175.out | 8 ++++++++
|
|
2 files changed, 36 insertions(+)
|
|
|
|
diff --git a/tests/qemu-iotests/175 b/tests/qemu-iotests/175
|
|
index b3b7712..74ca49d 100755
|
|
--- a/tests/qemu-iotests/175
|
|
+++ b/tests/qemu-iotests/175
|
|
@@ -50,6 +50,23 @@ _filter_blocks()
|
|
-e "s/blocks=$((extra_blocks + img_size / 512))\\(\$\\|[^0-9]\\)/max allocation/"
|
|
}
|
|
|
|
+# Resize image using block_resize.
|
|
+# Parameter 1: image path
|
|
+# Parameter 2: new size
|
|
+_block_resize()
|
|
+{
|
|
+ local path=$1
|
|
+ local size=$2
|
|
+
|
|
+ $QEMU -qmp stdio -nographic -nodefaults \
|
|
+ -blockdev file,node-name=file,filename=$path,cache.direct=on \
|
|
+ <<EOF
|
|
+{'execute': 'qmp_capabilities'}
|
|
+{'execute': 'block_resize', 'arguments': {'node-name': 'file', 'size': $size}}
|
|
+{'execute': 'quit'}
|
|
+EOF
|
|
+}
|
|
+
|
|
# get standard environment, filters and checks
|
|
. ./common.rc
|
|
. ./common.filter
|
|
@@ -58,6 +75,9 @@ _supported_fmt raw
|
|
_supported_proto file
|
|
_supported_os Linux
|
|
|
|
+_default_cache_mode none
|
|
+_supported_cache_modes none directsync
|
|
+
|
|
size=$((1 * 1024 * 1024))
|
|
|
|
touch "$TEST_DIR/empty"
|
|
@@ -80,6 +100,14 @@ for mode in off full falloc; do
|
|
stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
|
|
done
|
|
|
|
+for new_size in 4096 1048576; do
|
|
+ echo
|
|
+ echo "== resize empty image with block_resize =="
|
|
+ _make_test_img 0 | _filter_imgfmt
|
|
+ _block_resize $TEST_IMG $new_size >/dev/null
|
|
+ stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $new_size
|
|
+done
|
|
+
|
|
# success, all done
|
|
echo "*** done"
|
|
rm -f $seq.full
|
|
diff --git a/tests/qemu-iotests/175.out b/tests/qemu-iotests/175.out
|
|
index 263e521..39c2ee0 100644
|
|
--- a/tests/qemu-iotests/175.out
|
|
+++ b/tests/qemu-iotests/175.out
|
|
@@ -15,4 +15,12 @@ size=1048576, max allocation
|
|
== creating image with preallocation falloc ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=falloc
|
|
size=1048576, max allocation
|
|
+
|
|
+== resize empty image with block_resize ==
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
|
|
+size=4096, min allocation
|
|
+
|
|
+== resize empty image with block_resize ==
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
|
|
+size=1048576, min allocation
|
|
*** done
|
|
--
|
|
1.8.3.1
|
|
|