* [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size
@ 2009-09-28 12:06 Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 1/3] qemu-iotests: Align test requests according to " Kevin Wolf
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Kevin Wolf @ 2009-09-28 12:06 UTC (permalink / raw)
To: hch; +Cc: Kevin Wolf, qemu-devel
Currently, all qcow2 tests align their test requests to hit the critical spots
in images that use 4k clusters. By default we are using 64k clusters now for a
while, so we need to make the tests more dynamic.
This patch series makes the cluster size variable in some of the generic code
like common.pattern and adds a test case for the non-4k cluster case.
Kevin Wolf (3):
qemu-iotests: Align test requests according to cluster size
qemu-iotests: 019: Make cluster size dynamic
qemu-iotests: Tests on non-4k clusters
013 | 9 +-
013.out | 682 +-
014 | 6 +-
014.out | 818 +-
019 | 13 +-
019.out | 4 +-
022 | 5 +-
022.out | 138 +-
023 | 119 +
023.out |25706 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
common.pattern | 69 +-
common.rc | 4 +
group | 1 +
13 files changed, 26709 insertions(+), 865 deletions(-)
mode change 100644 => 100755 021
create mode 100755 023
create mode 100644 023.out
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 1/3] qemu-iotests: Align test requests according to cluster size
2009-09-28 12:06 [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Kevin Wolf
@ 2009-09-28 12:06 ` Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 2/3] qemu-iotests: 019: Make cluster size dynamic Kevin Wolf
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2009-09-28 12:06 UTC (permalink / raw)
To: hch; +Cc: Kevin Wolf, qemu-devel
Change the io_test and io_test2 functions to take the cluster size of the image
and the number of test requests to issue. Tests are changed to specify a
cluster size (usually 4k), but expected test results stay the same for now
(apart from qemu-img printing the cluster size now).
Based on a patch written by Christoph Hellwig.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
013 | 9 ++++---
013.out | 2 +-
014 | 6 +++-
014.out | 2 +-
019 | 1 +
019.out | 4 +-
022 | 5 ++-
022.out | 2 +-
common.pattern | 68 +++++++++++++++++++++++++++++++------------------------
common.rc | 4 +++
10 files changed, 60 insertions(+), 43 deletions(-)
diff --git a/013 b/013
index 565071f..bd9fdef 100755
--- a/013
+++ b/013
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# qcow2 pattern test, empty and compressed image
+# qcow2 pattern test, empty and compressed image - 4k cluster patterns
#
# Copyright (C) 2009 Red Hat, Inc.
#
@@ -45,6 +45,7 @@ _supported_os Linux
TEST_OFFSETS="0 4294967296"
TEST_OPS="writev read write readv"
+CLUSTER_SIZE=4096
_make_test_img 6G
@@ -54,7 +55,7 @@ echo
for offset in $TEST_OFFSETS; do
echo "At offset $offset:"
for op in $TEST_OPS; do
- io_test $op $offset
+ io_test $op $offset $CLUSTER_SIZE 8
done
_check_test_img
done
@@ -72,7 +73,7 @@ echo
for offset in $TEST_OFFSETS; do
echo "With offset $offset:"
for op in read readv; do
- io_test $op $offset
+ io_test $op $offset $CLUSTER_SIZE 8
done
_check_test_img
done
@@ -85,7 +86,7 @@ for offset in $TEST_OFFSETS; do
offset=$((offset + 512))
echo "With offset $offset:"
for op in $TEST_OPS; do
- io_test $op $offset
+ io_test $op $offset $CLUSTER_SIZE 8
done
_check_test_img
done
diff --git a/013.out b/013.out
index 01d306d..4072e8d 100644
--- a/013.out
+++ b/013.out
@@ -1,5 +1,5 @@
QA output created by 013
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 cluster_size=4096
Testing empty image
At offset 0:
diff --git a/014 b/014
index d7f50af..ee7bf21 100755
--- a/014
+++ b/014
@@ -1,6 +1,7 @@
#!/bin/sh
#
# qcow2 pattern test, complex patterns including compression and snapshots
+# Using patterns for 4k cluster size.
#
#
# Copyright (C) 2009 Red Hat, Inc.
@@ -46,13 +47,14 @@ _supported_os Linux
TEST_OFFSETS="0 4294967296"
TEST_OPS="writev read write readv"
+CLUSTER_SIZE=4096
_make_test_img 6G
echo "Testing empty image:"
for offset in $TEST_OFFSETS; do
echo test2: With offset $offset
- io_test2 $offset
+ io_test2 $offset $CLUSTER_SIZE 256
_check_test_img
done
@@ -62,7 +64,7 @@ for i in `seq 1 3`; do
for offset in $TEST_OFFSETS; do
echo With snapshot test$i, offset $offset
for op in $TEST_OPS; do
- io_test $op $offset
+ io_test $op $offset $CLUSTER_SIZE 8
done
_check_test_img
done
diff --git a/014.out b/014.out
index b2c0176..3fbc3a5 100644
--- a/014.out
+++ b/014.out
@@ -1,5 +1,5 @@
QA output created by 014
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 cluster_size=4096
Testing empty image:
test2: With offset 0
=== Clusters to be compressed [1]
diff --git a/019 b/019
index 0c84d2f..c3bf950 100755
--- a/019
+++ b/019
@@ -48,6 +48,7 @@ _supported_fmt qcow qcow2 vmdk
_supported_os Linux
TEST_OFFSETS="0 4294967296"
+CLUSTER_SIZE=65536
_make_test_img 6G
diff --git a/019.out b/019.out
index 9ac1a21..ef82d02 100644
--- a/019.out
+++ b/019.out
@@ -1,5 +1,5 @@
QA output created by 019
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 cluster_size=65536
Filling base image
=== IO: pattern 0
@@ -269,7 +269,7 @@ qemu-io> wrote 65536/65536 bytes at offset 4296081408
qemu-io> No errors were found on the image.
Creating test image with backing file
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file='TEST_DIR/t.IMGFMT.base'
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file='TEST_DIR/t.IMGFMT.base' cluster_size=65536
Filling test image
=== IO: pattern 1
diff --git a/022 b/022
index ca5df99..ccf2319 100755
--- a/022
+++ b/022
@@ -46,6 +46,7 @@ _supported_fmt qcow2
_supported_os Linux
TEST_OFFSETS="10485760 4294967296"
+CLUSTER_SIZE="4096"
_make_test_img 6G
@@ -54,8 +55,8 @@ echo
for offset in $TEST_OFFSETS; do
echo "At offset $offset:"
- io_test "write -b" $offset
- io_test "read -b" $offset
+ io_test "write -b" $offset $CLUSTER_SIZE 8
+ io_test "read -b" $offset $CLUSTER_SIZE 8
_check_test_img
done
diff --git a/022.out b/022.out
index 0100f67..d1a610d 100644
--- a/022.out
+++ b/022.out
@@ -1,5 +1,5 @@
QA output created by 022
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 cluster_size=4096
Testing empty image
At offset 10485760:
diff --git a/common.pattern b/common.pattern
index 08e1cda..ae28863 100644
--- a/common.pattern
+++ b/common.pattern
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Copyright (C) 2009 Red Hat, Inc.
#
@@ -63,69 +63,77 @@ function io_zero() {
function io_test() {
local op=$1
local offset=$2
+ local cluster_size=$3
- # Complete clusters (size = 4k)
- io "$op" $offset 4096 4096 256
- offset=$((offset + 256 * 4096))
+ local num_large=$4
+ local num_medium=$((num_large * num_large))
+ local num_small=$((4 * num_medium))
+
+ local half_cluster=$((cluster_size / 2))
+ local quarter_cluster=$((cluster_size / 4))
+ local l2_size=$((cluster_size * cluster_size / 8))
+
+ # Complete clusters
+ io "$op" $offset $cluster_size $cluster_size $num_small
+ offset=$((offset + num_small * $cluster_size))
# From somewhere in the middle to the end of a cluster
- io "$op" $((offset + 2048)) 2048 4096 256
- offset=$((offset + 256 * 4096))
+ io "$op" $((offset + $half_cluster)) $half_cluster $cluster_size $num_small
+ offset=$((offset + num_small * $cluster_size))
# From the start to somewhere in the middle of a cluster
- io "$op" $offset 2048 4096 256
- offset=$((offset + 256 * 4096))
+ io "$op" $offset $half_cluster $cluster_size $num_small
+ offset=$((offset + num_small * $cluster_size))
# Completely misaligned (and small)
- io "$op" $((offset + 1024)) 2048 4096 256
- offset=$((offset + 256 * 4096))
+ io "$op" $((offset + $quarter_cluster)) $half_cluster $cluster_size $num_small
+ offset=$((offset + num_small * $cluster_size))
# Spanning multiple clusters
- io "$op" $((offset + 2048)) 8192 12288 64
- offset=$((offset + 64 * 12288))
+ io "$op" $((offset + $half_cluster)) $((cluster_size * 2)) $((cluster_size * 3)) $num_medium
+ offset=$((offset + num_medium * 3 * $cluster_size))
# Spanning multiple L2 tables
# L2 table size: 512 clusters of 4k = 2M
- io "$op" $((offset + 2048)) 4194304 4999680 8
- offset=$((offset + 8 * 4999680))
-
- if false; then
- true
- fi
+ io "$op" $((offset + $half_cluster)) $((2 * l2_size)) 4999680 $num_large
+ offset=$((offset + num_large * (2 * l2_size + 512 * 1573)))
}
function io_test2() {
local orig_offset=$1
+ local cluster_size=$2
+ local num=$3
# Pattern (repeat after 9 clusters):
- # used - used - free - used - compressed - compressed - free - free - compressed
+ # used - used - free - used - compressed - compressed -
+ # free - free - compressed
# Write the clusters to be compressed
echo === Clusters to be compressed [1]
- io_pattern writev $((offset + 4 * 4096)) 4096 $((9 * 4096)) 256 165
+ io_pattern writev $((offset + 4 * $cluster_size)) $cluster_size $((9 * $cluster_size)) $num 165
echo === Clusters to be compressed [2]
- io_pattern writev $((offset + 5 * 4096)) 4096 $((9 * 4096)) 256 165
+ io_pattern writev $((offset + 5 * $cluster_size)) $cluster_size $((9 * $cluster_size)) $num 165
echo === Clusters to be compressed [3]
- io_pattern writev $((offset + 8 * 4096)) 4096 $((9 * 4096)) 256 165
+ io_pattern writev $((offset + 8 * $cluster_size)) $cluster_size $((9 * $cluster_size)) $num 165
mv $TEST_IMG $TEST_IMG.orig
$QEMU_IMG convert -f $IMGFMT -O $IMGFMT -c $TEST_IMG.orig $TEST_IMG
# Write the used clusters
echo === Used clusters [1]
- io_pattern writev $((offset + 0 * 4096)) 4096 $((9 * 4096)) 256 165
+ io_pattern writev $((offset + 0 * $cluster_size)) $cluster_size $((9 * $cluster_size)) $num 165
echo === Used clusters [2]
- io_pattern writev $((offset + 1 * 4096)) 4096 $((9 * 4096)) 256 165
+ io_pattern writev $((offset + 1 * $cluster_size)) $cluster_size $((9 * $cluster_size)) $num 165
echo === Used clusters [3]
- io_pattern writev $((offset + 3 * 4096)) 4096 $((9 * 4096)) 256 165
+ io_pattern writev $((offset + 3 * $cluster_size)) $cluster_size $((9 * $cluster_size)) $num 165
# Read them
echo === Read used/compressed clusters
- io_pattern readv $((offset + 0 * 4096)) $((2 * 4096)) $((9 * 4096)) 256 165
- io_pattern readv $((offset + 3 * 4096)) $((3 * 4096)) $((9 * 4096)) 256 165
- io_pattern readv $((offset + 8 * 4096)) $((1 * 4096)) $((9 * 4096)) 256 165
+ io_pattern readv $((offset + 0 * $cluster_size)) $((2 * $cluster_size)) $((9 * $cluster_size)) $num 165
+ io_pattern readv $((offset + 3 * $cluster_size)) $((3 * $cluster_size)) $((9 * $cluster_size)) $num 165
+ io_pattern readv $((offset + 8 * $cluster_size)) $((1 * $cluster_size)) $((9 * $cluster_size)) $num 165
echo === Read zeros
- io_zero readv $((offset + 2 * 4096)) $((1 * 4096)) $((9 * 4096)) 256
- io_zero readv $((offset + 6 * 4096)) $((2 * 4096)) $((9 * 4096)) 256
+ io_zero readv $((offset + 2 * $cluster_size)) $((1 * $cluster_size)) $((9 * $cluster_size)) $num
+ io_zero readv $((offset + 6 * $cluster_size)) $((2 * $cluster_size)) $((9 * $cluster_size)) $num
}
diff --git a/common.rc b/common.rc
index 6ef6b51..0a7ba00 100644
--- a/common.rc
+++ b/common.rc
@@ -55,6 +55,10 @@ _make_test_img()
# at least one argument (the image size) needs to be added
local extra_img_options=$*
+ if [ "$IMGFMT" = "qcow2" -a -n "$CLUSTER_SIZE" ]; then
+ extra_img_options="-o cluster_size=$CLUSTER_SIZE $extra_img_options"
+ fi
+
# XXX(hch): have global image options?
$QEMU_IMG create -f $IMGFMT $TEST_IMG $extra_img_options | \
sed -e "s#$TEST_DIR#TEST_DIR#g" | \
--
1.6.2.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 2/3] qemu-iotests: 019: Make cluster size dynamic
2009-09-28 12:06 [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 1/3] qemu-iotests: Align test requests according to " Kevin Wolf
@ 2009-09-28 12:06 ` Kevin Wolf
2009-09-28 12:13 ` [Qemu-devel] [PATCH 3/3] qemu-iotests: Tests on non-4k clusters Kevin Wolf
2009-10-01 17:47 ` [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Christoph Hellwig
3 siblings, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2009-09-28 12:06 UTC (permalink / raw)
To: hch; +Cc: Kevin Wolf, qemu-devel
Change the offsets for test requests according to CLUSTER_SIZE.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
019 | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
mode change 100644 => 100755 021
diff --git a/019 b/019
index c3bf950..20893c5 100755
--- a/019
+++ b/019
@@ -60,7 +60,7 @@ for offset in $TEST_OFFSETS; do
io writev $(( offset )) 512 1024 64
# Complete backing clusters
- io writev $(( offset + 1024 * 1024)) 65536 65536 1
+ io writev $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1
done
_check_test_img
@@ -78,7 +78,7 @@ for offset in $TEST_OFFSETS; do
io writev $(( offset + 512 )) 512 1024 64
# Complete test image clusters
- io writev $(( offset + 1024 * 1024 + 65536)) 65536 65536 1
+ io writev $(( offset + 1024 * 1024 + $CLUSTER_SIZE)) $CLUSTER_SIZE $CLUSTER_SIZE 1
done
_check_test_img
@@ -89,7 +89,7 @@ echo "Checking if backing clusters are allocated when they shouldn't"
echo
for offset in $TEST_OFFSETS; do
# Complete backing clusters
- is_allocated $(( offset + 1024 * 1024)) 65536 65536 1
+ is_allocated $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1
done
echo "Reading"
@@ -101,11 +101,11 @@ for offset in $TEST_OFFSETS; do
io readv $(( offset + 512 )) 512 1024 64
# Complete test image clusters
- io readv $(( offset + 1024 * 1024)) 65536 65536 1
- io readv $(( offset + 1024 * 1024 + 65536)) 65536 65536 1
+ io readv $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1
+ io readv $(( offset + 1024 * 1024 + $CLUSTER_SIZE)) $CLUSTER_SIZE $CLUSTER_SIZE 1
# Empty sectors
- io_zero readv $(( offset + 1024 * 1024 + 65536 * 4 )) 65536 65536 1
+ io_zero readv $(( offset + 1024 * 1024 + $CLUSTER_SIZE * 4 )) $CLUSTER_SIZE $CLUSTER_SIZE 1
done
_check_test_img
diff --git a/021 b/021
old mode 100644
new mode 100755
--
1.6.2.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 3/3] qemu-iotests: Tests on non-4k clusters
2009-09-28 12:06 [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 1/3] qemu-iotests: Align test requests according to " Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 2/3] qemu-iotests: 019: Make cluster size dynamic Kevin Wolf
@ 2009-09-28 12:13 ` Kevin Wolf
2009-10-01 17:47 ` [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Christoph Hellwig
3 siblings, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2009-09-28 12:13 UTC (permalink / raw)
To: hch; +Cc: Kevin Wolf, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1138 bytes --]
This one is a bit larger (1,5 MB) as it contains lots of expected test
output. So I decided it might be inappropriate to send an email of this
size to the list. Please find the compressed patch attached.
>From 0f6107fa4f4f58245b8fdd46f63dbba129bf9da3 Mon Sep 17 00:00:00 2001
From: Kevin Wolf <kwolf@redhat.com>
Date: Fri, 25 Sep 2009 19:19:44 +0200
Subject: [PATCH 3/3] qemu-iotests: Tests on non-4k clusters
This patch adds test case 023 which tests some more cluster sizes. For
anythinger larger than 4k clusters we can't use requests that are
l2_size or more (128k for 1k clusters, 2 MB for 4k clusters, 512 MB for
64k clusters). Therefore one of the common.pattern cases is changed and
needs new expected results for some old test cases.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
013.out | 680 +-
014.out | 816 +-
022.out | 136 +-
023 | 119 +
023.out |25706
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
common.pattern | 5 +-
group | 1 +
7 files changed, 26645 insertions(+), 818 deletions(-)
create mode 100755 023
create mode 100644 023.out
[-- Attachment #2: 0003-qemu-iotests-Tests-on-non-4k-clusters.patch.bz2 --]
[-- Type: application/x-bzip, Size: 30650 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size
2009-09-28 12:06 [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Kevin Wolf
` (2 preceding siblings ...)
2009-09-28 12:13 ` [Qemu-devel] [PATCH 3/3] qemu-iotests: Tests on non-4k clusters Kevin Wolf
@ 2009-10-01 17:47 ` Christoph Hellwig
3 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2009-10-01 17:47 UTC (permalink / raw)
To: Kevin Wolf; +Cc: hch, qemu-devel
On Mon, Sep 28, 2009 at 02:06:30PM +0200, Kevin Wolf wrote:
> Currently, all qcow2 tests align their test requests to hit the critical spots
> in images that use 4k clusters. By default we are using 64k clusters now for a
> while, so we need to make the tests more dynamic.
>
> This patch series makes the cluster size variable in some of the generic code
> like common.pattern and adds a test case for the non-4k cluster case.
Thanks, I've put all three patches in.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-10-01 17:47 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-28 12:06 [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 1/3] qemu-iotests: Align test requests according to " Kevin Wolf
2009-09-28 12:06 ` [Qemu-devel] [PATCH 2/3] qemu-iotests: 019: Make cluster size dynamic Kevin Wolf
2009-09-28 12:13 ` [Qemu-devel] [PATCH 3/3] qemu-iotests: Tests on non-4k clusters Kevin Wolf
2009-10-01 17:47 ` [Qemu-devel] [PATCH 0/3] qemu-iotests: Variable cluster size Christoph Hellwig
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.