From nobody Thu May 2 16:04:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1542648661126610.0173093224046; Mon, 19 Nov 2018 09:31:01 -0800 (PST) Received: from localhost ([::1]:58180 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gOnNj-0000Ru-7Y for importer@patchew.org; Mon, 19 Nov 2018 12:30:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44633) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gOnMn-0008OS-5E for qemu-devel@nongnu.org; Mon, 19 Nov 2018 12:29:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gOnMl-0006gW-VM for qemu-devel@nongnu.org; Mon, 19 Nov 2018 12:29:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42812) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gOnMg-0006aq-T1; Mon, 19 Nov 2018 12:29:39 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EF57C308FF0D; Mon, 19 Nov 2018 17:29:37 +0000 (UTC) Received: from red.redhat.com (ovpn-121-142.rdu2.redhat.com [10.10.121.142]) by smtp.corp.redhat.com (Postfix) with ESMTP id 179755D9C7; Mon, 19 Nov 2018 17:29:31 +0000 (UTC) From: Eric Blake To: qemu-devel@nongnu.org Date: Mon, 19 Nov 2018 11:29:24 -0600 Message-Id: <20181119172924.2296342-1-eblake@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Mon, 19 Nov 2018 17:29:38 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "open list:Block layer core" , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Testing granularity at the same size as the cluster isn't quite as fun as what happens when it is larger or smaller. This enhancement also shows that qemu's nbd server can server the same disk over multiple exports simultaneously. Signed-off-by: Eric Blake Reviewed-by: John Snow Tested-by: John Snow --- Just a testsuite enhancement, so suitable for -rc2 if it gets a quick review. Otherwise, I will probably include it as part of a larger series I'm working on to make qemu-nbd handle misaligned images more sanely (that's a pre-existing problem in the 3.0 release, so it's not fixing a regression and may be invovled enough to slip into 4.0, depending on what the rest of my series looks like). tests/qemu-iotests/223 | 43 +++++++++++++++++++++++++++++++------- tests/qemu-iotests/223.out | 32 +++++++++++++++++++++------- 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/tests/qemu-iotests/223 b/tests/qemu-iotests/223 index 72419e03388..397b865d347 100755 --- a/tests/qemu-iotests/223 +++ b/tests/qemu-iotests/223 @@ -57,10 +57,11 @@ run_qemu() } echo -echo "=3D=3D=3D Create partially sparse image, then add dirty bitmap =3D= =3D=3D" +echo "=3D=3D=3D Create partially sparse image, then add dirty bitmaps =3D= =3D=3D" echo -_make_test_img 4M +# Two bitmaps, to contrast granularity issues +_make_test_img -o cluster_size=3D4k 4M $QEMU_IO -c 'w -P 0x11 1M 2M' "$TEST_IMG" | _filter_qemu_io run_qemu < >(_filter_nbd) @@ -103,6 +114,8 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"blockdev-add", "file":{"driver":"file", "filename":"'"$TEST_IMG"'"}}}' "return" _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable", "arguments":{"node":"n", "name":"b"}}' "return" +_send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable", + "arguments":{"node":"n", "name":"b2"}}' "return" _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"'"$TEST_DIR/nbd"'"}}}}' "return" @@ -110,26 +123,40 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-a= dd", "arguments":{"device":"n"}}' "return" _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap", "arguments":{"name":"n", "bitmap":"b"}}' "return" +_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add", + "arguments":{"device":"n", "name":"n2"}}' "return" +_send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap", + "arguments":{"name":"n2", "bitmap":"b2"}}' "return" echo -echo "=3D=3D=3D Contrast normal status with dirty-bitmap status =3D=3D=3D" +echo "=3D=3D=3D Contrast normal status to large granularity dirty-bitmap = =3D=3D=3D" echo QEMU_IO_OPTIONS=3D$QEMU_IO_OPTIONS_NO_FMT IMG=3D"driver=3Dnbd,export=3Dn,server.type=3Dunix,server.path=3D$TEST_DIR/= nbd" -$QEMU_IO -r -c 'r -P 0 0 1m' -c 'r -P 0x11 1m 1m' \ - -c 'r -P 0x22 2m 2m' --image-opts "$IMG" | _filter_qemu_io +$QEMU_IO -r -c 'r -P 0x22 512 512' -c 'r -P 0 512k 512k' -c 'r -P 0x11 1m = 1m' \ + -c 'r -P 0x33 2m 2m' --image-opts "$IMG" | _filter_qemu_io $QEMU_IMG map --output=3Djson --image-opts \ "$IMG" | _filter_qemu_img_map $QEMU_IMG map --output=3Djson --image-opts \ "$IMG,x-dirty-bitmap=3Dqemu:dirty-bitmap:b" | _filter_qemu_img_map +echo +echo "=3D=3D=3D Contrast to small granularity dirty-bitmap =3D=3D=3D" +echo + +IMG=3D"driver=3Dnbd,export=3Dn2,server.type=3Dunix,server.path=3D$TEST_DIR= /nbd" +$QEMU_IMG map --output=3Djson --image-opts \ + "$IMG,x-dirty-bitmap=3Dqemu:dirty-bitmap:b2" | _filter_qemu_img_map + echo echo "=3D=3D=3D End NBD server =3D=3D=3D" echo _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove", "arguments":{"name":"n"}}' "return" +_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove", + "arguments":{"name":"n2"}}' "return" _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-stop"}' "return" _send_qemu_cmd $QEMU_HANDLE '{"execute":"quit"}' "return" diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out index 33021c8e6a1..de417477de0 100644 --- a/tests/qemu-iotests/223.out +++ b/tests/qemu-iotests/223.out @@ -1,6 +1,6 @@ QA output created by 223 -=3D=3D=3D Create partially sparse image, then add dirty bitmap =3D=3D=3D +=3D=3D=3D Create partially sparse image, then add dirty bitmaps =3D=3D=3D Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D4194304 wrote 2097152/2097152 bytes at offset 1048576 @@ -11,16 +11,22 @@ QMP_VERSION {"return": {}} {"return": {}} {"return": {}} +{"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "SHUTDOWN", "data": {"guest": false}} =3D=3D=3D Write part of the file under active bitmap =3D=3D=3D +wrote 512/512 bytes at offset 512 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 2097152/2097152 bytes at offset 2097152 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -=3D=3D=3D End dirty bitmap, and start serving image over NBD =3D=3D=3D +=3D=3D=3D End dirty bitmaps, and start serving image over NBD =3D=3D=3D +{"return": {}} +{"return": {}} +{"return": {}} {"return": {}} {"return": {}} {"return": {}} @@ -28,21 +34,33 @@ wrote 2097152/2097152 bytes at offset 2097152 {"return": {}} {"return": {}} -=3D=3D=3D Contrast normal status with dirty-bitmap status =3D=3D=3D +=3D=3D=3D Contrast normal status to large granularity dirty-bitmap =3D=3D= =3D -read 1048576/1048576 bytes at offset 0 -1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 512 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 524288/524288 bytes at offset 524288 +512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) read 1048576/1048576 bytes at offset 1048576 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) read 2097152/2097152 bytes at offset 2097152 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false}, +[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true}, +{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": fals= e}, { "start": 1048576, "length": 3145728, "depth": 0, "zero": false, "data": = true}] -[{ "start": 0, "length": 2097152, "depth": 0, "zero": false, "data": true}, +[{ "start": 0, "length": 65536, "depth": 0, "zero": false, "data": false}, +{ "start": 65536, "length": 2031616, "depth": 0, "zero": false, "data": tr= ue}, +{ "start": 2097152, "length": 2097152, "depth": 0, "zero": false, "data": = false}] + +=3D=3D=3D Contrast to small granularity dirty-bitmap =3D=3D=3D + +[{ "start": 0, "length": 512, "depth": 0, "zero": false, "data": true}, +{ "start": 512, "length": 512, "depth": 0, "zero": false, "data": false}, +{ "start": 1024, "length": 2096128, "depth": 0, "zero": false, "data": tru= e}, { "start": 2097152, "length": 2097152, "depth": 0, "zero": false, "data": = false}] =3D=3D=3D End NBD server =3D=3D=3D +{"return": {}} {"return": {}} {"return": {}} {"return": {}} --=20 2.17.2