All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: Sam Li <faithilikerun@gmail.com>
Cc: qemu-devel@nongnu.org, dlemoal@kernel.org,
	dmitry.fomichev@wdc.com, hare@suse.de,
	Markus Armbruster <armbru@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>,
	qemu-block@nongnu.org, Eric Blake <eblake@redhat.com>,
	Hanna Reitz <hreitz@redhat.com>
Subject: Re: [RFC 4/4] iotests: test the zoned format feature for qcow2 file
Date: Mon, 19 Jun 2023 16:40:31 +0200	[thread overview]
Message-ID: <20230619144031.GE2497337@fedora> (raw)
In-Reply-To: <20230605104108.125270-5-faithilikerun@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 8060 bytes --]

On Mon, Jun 05, 2023 at 06:41:08PM +0800, Sam Li wrote:
> The zoned format feature can be tested by:
> $ tests/qemu-iotests/check zoned-qcow2
> 
> Signed-off-by: Sam Li <faithilikerun@gmail.com>
> ---
>  tests/qemu-iotests/tests/zoned-qcow2     | 110 +++++++++++++++++++++++
>  tests/qemu-iotests/tests/zoned-qcow2.out |  87 ++++++++++++++++++
>  2 files changed, 197 insertions(+)
>  create mode 100755 tests/qemu-iotests/tests/zoned-qcow2
>  create mode 100644 tests/qemu-iotests/tests/zoned-qcow2.out
> 
> diff --git a/tests/qemu-iotests/tests/zoned-qcow2 b/tests/qemu-iotests/tests/zoned-qcow2
> new file mode 100755
> index 0000000000..6aa5ab3a03
> --- /dev/null
> +++ b/tests/qemu-iotests/tests/zoned-qcow2
> @@ -0,0 +1,110 @@
> +#!/usr/bin/env bash
> +#
> +# Test zone management operations for qcow2 file.
> +#
> +
> +seq="$(basename $0)"
> +echo "QA output created by $seq"
> +status=1 # failure is the default!
> +
> +file_name="zbc.qcow2"

Please use $TEST_IMG_FILE instead of defining your own variable here.
(TEST_IMG_FILE is already defined in common.rc.)

> +_cleanup()
> +{
> +  _cleanup_test_img
> +  _rm_test_img "$file_name"
> +}
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ../common.rc
> +. ../common.filter
> +. ../common.qemu
> +
> +# This test only runs on Linux hosts with qcow2 image files.

Then you need to add:
_supported_fmt qcow2

> +_supported_proto file
> +_supported_os Linux

Is this test really Linux-specific?

> +
> +echo
> +echo "=== Initial image setup ==="
> +echo
> +
> +$QEMU_IMG create -f qcow2 $file_name -o size=768M -o zone_size=64M \
> +-o zone_capacity=64M -o zone_nr_conv=0 -o max_append_sectors=512 \
> +-o max_open_zones=0 -o max_active_zones=0 -o zoned_profile=zbc
> +
> +IMG="--image-opts -n driver=qcow2,file.driver=file,file.filename=$file_name"
> +QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
> +
> +echo
> +echo "=== Testing a qcow2 img with zoned format ==="
> +echo
> +echo "case 1: if the operations work"
> +
> +echo "(1) report the first zone:"
> +$QEMU_IO $IMG -c "zrp 0 1"
> +echo
> +echo "report the first 10 zones"
> +$QEMU_IO $IMG -c "zrp 0 10"
> +echo
> +echo "report the last zone:"
> +$QEMU_IO $IMG -c "zrp 0x2C000000 2" # 0x2C000000 / 512 = 0x160000
> +echo
> +echo
> +echo "(2) opening the first zone"
> +$QEMU_IO $IMG -c "zo 0 0x4000000" # 0x4000000 / 512 = 0x20000
> +echo "report after:"
> +$QEMU_IO $IMG -c "zrp 0 1"
> +echo
> +echo "opening the second zone"
> +$QEMU_IO $IMG -c "zo 0x4000000 0x4000000"
> +echo "report after:"
> +$QEMU_IO $IMG -c "zrp 0x4000000 1"
> +echo
> +echo "opening the last zone"
> +$QEMU_IO $IMG -c "zo 0x2C000000 0x4000000"
> +echo "report after:"
> +$QEMU_IO $IMG -c "zrp 0x2C000000 2"
> +echo
> +echo
> +echo "(3) closing the first zone"
> +$QEMU_IO $IMG -c "zc 0 0x4000000"
> +echo "report after:"
> +$QEMU_IO $IMG -c "zrp 0 1"
> +echo
> +echo "closing the last zone"
> +$QEMU_IO $IMG -c "zc 0x3e70000000 0x4000000"
> +echo "report after:"
> +$QEMU_IO $IMG -c "zrp 0x3e70000000 2"
> +echo
> +echo
> +echo "(4) finishing the second zone"
> +$QEMU_IO $IMG -c "zf 0x4000000 0x4000000"
> +echo "After finishing a zone:"
> +$QEMU_IO $IMG -c "zrp 0x4000000 1"
> +echo
> +echo
> +echo "(5) resetting the second zone"
> +$QEMU_IO $IMG -c "zrs 0x4000000 0x4000000"
> +echo "After resetting a zone:"
> +$QEMU_IO $IMG -c "zrp 0x4000000 1"
> +echo
> +echo
> +echo "(6) append write" # the physical block size of the device is 4096
> +$QEMU_IO $IMG -c "zrp 0 1"
> +$QEMU_IO $IMG -c "zap -p 0 0x1000 0x2000"
> +echo "After appending the first zone firstly:"
> +$QEMU_IO $IMG -c "zrp 0 1"
> +$QEMU_IO $IMG -c "zap -p 0 0x1000 0x2000"
> +echo "After appending the first zone secondly:"
> +$QEMU_IO $IMG -c "zrp 0 1"
> +$QEMU_IO $IMG -c "zap -p 0x4000000 0x1000 0x2000"
> +echo "After appending the second zone firstly:"
> +$QEMU_IO $IMG -c "zrp 0x4000000 1"
> +$QEMU_IO $IMG -c "zap -p 0x4000000 0x1000 0x2000"
> +echo "After appending the second zone secondly:"
> +$QEMU_IO $IMG -c "zrp 0x4000000 1"
> +
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0
> diff --git a/tests/qemu-iotests/tests/zoned-qcow2.out b/tests/qemu-iotests/tests/zoned-qcow2.out
> new file mode 100644
> index 0000000000..288bceffc4
> --- /dev/null
> +++ b/tests/qemu-iotests/tests/zoned-qcow2.out
> @@ -0,0 +1,87 @@
> +QA output created by zoned-qcow2
> +
> +=== Initial image setup ===
> +
> +Formatting 'zbc.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib zoned_profile=zbc zone_size=67108864 zone_capacity=67108864 zone_nr_conv=0 max_append_sectors=512 max_active_zones=0 max_open_zones=0 size=805306368 lazy_refcounts=off refcount_bits=16
> +
> +=== Testing a qcow2 img with zoned format ===
> +
> +case 1: if the operations work
> +(1) report the first zone:
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x0, zcond:1, [type: 2]
> +
> +report the first 10 zones
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x0, zcond:1, [type: 2]
> +start: 0x20000, len 0x20000, cap 0x20000, wptr 0x20000, zcond:1, [type: 2]
> +start: 0x40000, len 0x20000, cap 0x20000, wptr 0x40000, zcond:1, [type: 2]
> +start: 0x60000, len 0x20000, cap 0x20000, wptr 0x60000, zcond:1, [type: 2]
> +start: 0x80000, len 0x20000, cap 0x20000, wptr 0x80000, zcond:1, [type: 2]
> +start: 0xa0000, len 0x20000, cap 0x20000, wptr 0xa0000, zcond:1, [type: 2]
> +start: 0xc0000, len 0x20000, cap 0x20000, wptr 0xc0000, zcond:1, [type: 2]
> +start: 0xe0000, len 0x20000, cap 0x20000, wptr 0xe0000, zcond:1, [type: 2]
> +start: 0x100000, len 0x20000, cap 0x20000, wptr 0x100000, zcond:1, [type: 2]
> +start: 0x120000, len 0x20000, cap 0x20000, wptr 0x120000, zcond:1, [type: 2]
> +
> +report the last zone:
> +start: 0x160000, len 0x20000, cap 0x20000, wptr 0x160000, zcond:1, [type: 2]
> +
> +
> +(2) opening the first zone
> +wps[0]: 0x0
> +report after:
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x0, zcond:3, [type: 2]
> +
> +opening the second zone
> +wps[1]: 0x20000
> +report after:
> +start: 0x20000, len 0x20000, cap 0x20000, wptr 0x20000, zcond:3, [type: 2]
> +
> +opening the last zone
> +wps[11]: 0x160000
> +report after:
> +start: 0x160000, len 0x20000, cap 0x20000, wptr 0x160000, zcond:3, [type: 2]
> +
> +
> +(3) closing the first zone
> +wps[0]: 0x0
> +report after:
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x0, zcond:4, [type: 2]
> +
> +closing the last zone
> +zone close failed: Input/output error
> +report after:
> +start: 0x1f380000, len 0x20000, cap 0x20000, wptr 0x0, zcond:0, [type: 2]
> +start: 0x1f3a0000, len 0x20000, cap 0x20000, wptr 0x0, zcond:0, [type: 2]
> +
> +
> +(4) finishing the second zone
> +wps[1]: 0x40000
> +After finishing a zone:
> +start: 0x20000, len 0x20000, cap 0x20000, wptr 0x40000, zcond:14, [type: 2]
> +
> +
> +(5) resetting the second zone
> +wps[1]: 0x20000
> +After resetting a zone:
> +start: 0x20000, len 0x20000, cap 0x20000, wptr 0x20000, zcond:1, [type: 2]
> +
> +
> +(6) append write
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x0, zcond:4, [type: 2]
> +wps[0]: 0x18
> +After zap done, the append sector is 0x0
> +After appending the first zone firstly:
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x18, zcond:2, [type: 2]
> +wps[0]: 0x30
> +After zap done, the append sector is 0x18
> +After appending the first zone secondly:
> +start: 0x0, len 0x20000, cap 0x20000, wptr 0x30, zcond:2, [type: 2]
> +wps[1]: 0x20018
> +After zap done, the append sector is 0x20000
> +After appending the second zone firstly:
> +start: 0x20000, len 0x20000, cap 0x20000, wptr 0x20018, zcond:2, [type: 2]
> +wps[1]: 0x20030
> +After zap done, the append sector is 0x20018
> +After appending the second zone secondly:
> +start: 0x20000, len 0x20000, cap 0x20000, wptr 0x20030, zcond:2, [type: 2]
> +*** done
> -- 
> 2.40.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

      reply	other threads:[~2023-06-19 14:41 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-05 10:41 [RFC 0/4] Add full zoned storage emulation to qcow2 driver Sam Li
2023-06-05 10:41 ` [RFC 1/4] docs/qcow2: add the zoned format feature Sam Li
2023-06-12  4:10   ` Stefan Hajnoczi
2023-06-13  8:01     ` Sam Li
2023-06-05 10:41 ` [RFC 2/4] qcow2: add configurations for zoned format extension Sam Li
2023-06-05 14:50   ` Eric Blake
2023-06-19 10:10   ` Stefan Hajnoczi
2023-06-19 10:32     ` Sam Li
2023-06-19 14:42       ` Stefan Hajnoczi
2023-06-19 14:50         ` Sam Li
2023-06-20 14:44           ` Stefan Hajnoczi
2023-06-20 15:07             ` Sam Li
2023-06-05 10:41 ` [RFC 3/4] qcow2: add zoned emulation capability Sam Li
2023-06-19 14:35   ` Stefan Hajnoczi
2023-06-05 10:41 ` [RFC 4/4] iotests: test the zoned format feature for qcow2 file Sam Li
2023-06-19 14:40   ` Stefan Hajnoczi [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230619144031.GE2497337@fedora \
    --to=stefanha@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dlemoal@kernel.org \
    --cc=dmitry.fomichev@wdc.com \
    --cc=eblake@redhat.com \
    --cc=faithilikerun@gmail.com \
    --cc=hare@suse.de \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.