[2/2,qemu-iotests] test bdrv_truncate()

Submitted by Stefan Hajnoczi on April 24, 2010, 8:20 a.m.

Details

Message ID 1272097219-6614-2-git-send-email-stefanha@linux.vnet.ibm.com
State New
Headers show

Commit Message

Stefan Hajnoczi April 24, 2010, 8:20 a.m.
This patch adds an image resize grow test to ensure that existing data
is not lost during grow and new space is zeroed.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
---
 025     |   73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 025.out |   25 +++++++++++++++++++++
 group   |    1 +
 3 files changed, 99 insertions(+), 0 deletions(-)
 create mode 100755 025
 create mode 100644 025.out

Comments

Kevin Wolf April 26, 2010, 7:08 a.m.
Am 24.04.2010 10:20, schrieb Stefan Hajnoczi:
> This patch adds an image resize grow test to ensure that existing data
> is not lost during grow and new space is zeroed.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
> ---
>  025     |   73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  025.out |   25 +++++++++++++++++++++
>  group   |    1 +
>  3 files changed, 99 insertions(+), 0 deletions(-)
>  create mode 100755 025
>  create mode 100644 025.out
> 
> diff --git a/025 b/025
> new file mode 100755
> index 0000000..09e5b4d
> --- /dev/null
> +++ b/025
> @@ -0,0 +1,73 @@
> +#!/bin/bash
> +#
> +# Resizing images
> +#
> +# Copyright (C) 2010 IBM, Corp.
> +#
> +# 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=stefanha@linux.vnet.ibm.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
> +. ./common.pattern
> +
> +_supported_fmt raw qcow2
> +_supported_os Linux
> +
> +echo "=== Creating image"
> +echo
> +small_size=$((128 * 1024 * 1024))
> +big_size=$((384 * 1024 * 1024))
> +_make_test_img $small_size
> +
> +echo
> +echo "=== Writing whole image"
> +io_pattern write 0 $small_size 0 1 0xc5
> +_check_test_img
> +
> +echo
> +echo "=== Resizing image"
> +$QEMU_IO -c "truncate $big_size" $TEST_IMG
> +_check_test_img

Here we could extend the test to check if the right image size is used
if the image isn't re-opened. Something like this:

$QEMU_IO $TEST_IMG <<EOF
length
truncate $big_size
length
EOF

Otherwise the test case looks good to me. We'll probably want another
one for shrinking images once this is supported by qcow2.

Kevin
Christoph Hellwig April 26, 2010, 9:46 a.m.
On Sat, Apr 24, 2010 at 09:20:19AM +0100, Stefan Hajnoczi wrote:
> This patch adds an image resize grow test to ensure that existing data
> is not lost during grow and new space is zeroed.

Look good, but I'll wait for the qcow2 truncate support to hit mainline
to apply this.

Patch hide | download patch | download mbox

diff --git a/025 b/025
new file mode 100755
index 0000000..09e5b4d
--- /dev/null
+++ b/025
@@ -0,0 +1,73 @@ 
+#!/bin/bash
+#
+# Resizing images
+#
+# Copyright (C) 2010 IBM, Corp.
+#
+# 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=stefanha@linux.vnet.ibm.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
+. ./common.pattern
+
+_supported_fmt raw qcow2
+_supported_os Linux
+
+echo "=== Creating image"
+echo
+small_size=$((128 * 1024 * 1024))
+big_size=$((384 * 1024 * 1024))
+_make_test_img $small_size
+
+echo
+echo "=== Writing whole image"
+io_pattern write 0 $small_size 0 1 0xc5
+_check_test_img
+
+echo
+echo "=== Resizing image"
+$QEMU_IO -c "truncate $big_size" $TEST_IMG
+_check_test_img
+
+echo
+echo "=== Verifying image size"
+$QEMU_IO -c "length" $TEST_IMG
+
+echo
+echo "=== Verifying resized image"
+io_pattern read 0 $small_size 0 1 0xc5
+io_pattern read $small_size $(($big_size - $small_size)) 0 1 0
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/025.out b/025.out
new file mode 100644
index 0000000..26e3113
--- /dev/null
+++ b/025.out
@@ -0,0 +1,25 @@ 
+QA output created by 025
+=== Creating image
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 
+
+=== Writing whole image
+=== IO: pattern 0xc5
+qemu-io> wrote 134217728/134217728 bytes at offset 0
+128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+qemu-io> No errors were found on the image.
+
+=== Resizing image
+No errors were found on the image.
+
+=== Verifying image size
+384 MiB
+
+=== Verifying resized image
+=== IO: pattern 0xc5
+qemu-io> read 134217728/134217728 bytes at offset 0
+128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+qemu-io> === IO: pattern 0
+qemu-io> read 268435456/268435456 bytes at offset 134217728
+256 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+qemu-io> *** done
diff --git a/group b/group
index b4b3b40..3c0e630 100644
--- a/group
+++ b/group
@@ -31,3 +31,4 @@ 
 022 rw snapshot auto
 023 rw auto
 024 rw backing auto
+025 rw auto