[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 4/7] iotests: Update 241 to expose backing layer
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
Re: [Qemu-block] [PATCH 4/7] iotests: Update 241 to expose backing layer fragmentation |
Date: |
Mon, 8 Apr 2019 13:51:46 +0000 |
03.04.2019 6:05, Eric Blake wrote:
> Previous commits have mentioned that our NBD server still sends
> unaligned fragments when an active layer with large advertised minimum
> block size is backed by another layer with a smaller block
> size. Expand the test to actually cover this scenario, by using qcow2
> encryption (which forces 512-byte alignment) with an unaligned raw
> backing file.
>
> The test passes, but only because the client side works around the
> server's non-compliance; if you repeat the test manually with tracing
> turned on, you will see the server sending a status for 1000 bytes
> data then 1048 bytes hole, which is not aligned. But reverting commit
> 737d3f5244 shows that it is indeed the client working around the bug
> in the server.
>
> Signed-off-by: Eric Blake <address@hidden>
Oops, 241 fails for me:
-WARNING: Image format was not specified for
'/home/eblake/qemu/tests/qemu-iotests/scratch/t.raw' and probing guessed raw.
+WARNING: Image format was not specified for
'/work/src/qemu/eric/tests/qemu-iotests/scratch/t.raw' and probing guessed raw.
We forget to filter output :(
Tested-by: Vladimir Sementsov-Ogievskiy <address@hidden>
> ---
> tests/qemu-iotests/241 | 20 +++++++++++++++++++-
> tests/qemu-iotests/241.out | 9 +++++++++
> 2 files changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/tests/qemu-iotests/241 b/tests/qemu-iotests/241
> index 4b196857387..c1fa6980dc8 100755
> --- a/tests/qemu-iotests/241
> +++ b/tests/qemu-iotests/241
> @@ -28,6 +28,7 @@ nbd_unix_socket=$TEST_DIR/test_qemu_nbd_socket
> _cleanup()
> {
> _cleanup_test_img
> + rm -f "$TEST_IMAGE_FILE.qcow2"
you mean _IMG_, not _IMAGE_.
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
> nbd_server_stop
> }
> trap "_cleanup; exit \$status" 0 1 2 3 15
> @@ -37,7 +38,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
> . ./common.filter
> . ./common.nbd
>
> -_supported_fmt raw
> +_supported_fmt raw # although the test also requires use of qcow2
> _supported_proto nbd
> _supported_os Linux
> _require_command QEMU_NBD
> @@ -88,6 +89,23 @@ $QEMU_IMG map --output=json "$TEST_IMG" |
> _filter_qemu_img_map
> $QEMU_IO -c map "$TEST_IMG"
> nbd_server_stop
>
> +echo
> +echo "=== Encrypted qcow2 file backed by unaligned raw image ==="
> +echo
> +
> +# Enabling encryption in qcow2 forces 512-alignment
> +SECRET=secret,id=sec0,data=12345
> +$QEMU_IMG create -f qcow2 -b "$TEST_IMG_FILE" -F raw --object "$SECRET" \
> + -o encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10 \
> + "$TEST_IMG_FILE.qcow2" 2k | _filter_img_create
> +nbd_server_start_unix_socket --object "$SECRET" --image-opts \
> + driver=qcow2,file.filename="$TEST_IMG_FILE.qcow2",encrypt.key-secret=sec0
> +
> +$QEMU_NBD_PROG --list -k $nbd_unix_socket | grep '\(size\|min\)'
> +$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
> +$QEMU_IO -c map "$TEST_IMG"
> +nbd_server_stop
> +
> # Not tested yet: we also want to ensure that qemu as NBD client does
> # not access beyond the end of a server's advertised unaligned size:
> # nbdkit -U - memory size=513 --run 'qemu-io -f raw -c "r 512 512" $nbd'
> diff --git a/tests/qemu-iotests/241.out b/tests/qemu-iotests/241.out
> index f481074a02e..ef7de1205d2 100644
> --- a/tests/qemu-iotests/241.out
> +++ b/tests/qemu-iotests/241.out
> @@ -25,4 +25,13 @@ WARNING: Image format was not specified for
> '/home/eblake/qemu/tests/qemu-iotest
> [{ "start": 0, "length": 1000, "depth": 0, "zero": false, "data": true,
> "offset": OFFSET},
> { "start": 1000, "length": 24, "depth": 0, "zero": true, "data": true,
> "offset": OFFSET}]
> 1 KiB (0x400) bytes allocated at offset 0 bytes (0x0)
> +
> +=== Encrypted qcow2 file backed by unaligned raw image ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT.qcow2', fmt=qcow2 size=2048
> backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT encrypt.format=luks
> encrypt.key-secret=sec0 encrypt.iter-time=10
> + size: 2048
> + min block: 512
> +[{ "start": 0, "length": 1024, "depth": 0, "zero": false, "data": true,
> "offset": OFFSET},
> +{ "start": 1024, "length": 1024, "depth": 0, "zero": true, "data": false,
> "offset": OFFSET}]
> +2 KiB (0x800) bytes allocated at offset 0 bytes (0x0)
> *** done
>
--
Best regards,
Vladimir
- [Qemu-block] [PATCH 1/7] nbd/server: Fix blockstatus trace, (continued)
[Qemu-block] [PATCH 3/7] nbd/server: Don't fail NBD_OPT_INFO for byte-aligned sources, Eric Blake, 2019/04/02
[Qemu-block] [PATCH 4/7] iotests: Update 241 to expose backing layer fragmentation, Eric Blake, 2019/04/02
- Re: [Qemu-block] [PATCH 4/7] iotests: Update 241 to expose backing layer fragmentation,
Vladimir Sementsov-Ogievskiy <=
[Qemu-block] [PATCH 5/7] block: Fix BDRV_BLOCK_RAW status to honor alignment, Eric Blake, 2019/04/02
[Qemu-block] [PATCH 6/7] nbd/server: Avoid unaligned read/block_status from backing, Eric Blake, 2019/04/02
[Qemu-block] [PATCH for-4.1 7/7] nbd/server: Avoid unaligned dirty-bitmap status, Eric Blake, 2019/04/02
[Qemu-block] [PATCH for-4.0? 8/7] nbd/client: Fix error message for server with unusable sizing, Eric Blake, 2019/04/04