From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDJWr-0000yd-57 for qemu-devel@nongnu.org; Fri, 01 Aug 2014 16:34:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XDJWk-0008DS-Pz for qemu-devel@nongnu.org; Fri, 01 Aug 2014 16:34:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45350) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDJWk-0008DO-IZ for qemu-devel@nongnu.org; Fri, 01 Aug 2014 16:34:10 -0400 Message-ID: <53DBF9BB.5020707@redhat.com> Date: Fri, 01 Aug 2014 22:34:03 +0200 From: Max Reitz MIME-Version: 1.0 References: <1406402531-9278-1-git-send-email-mreitz@redhat.com> <1406402531-9278-8-git-send-email-mreitz@redhat.com> <20140731083011.GL707@irqsave.net> In-Reply-To: <20140731083011.GL707@irqsave.net> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH alt 7/7] iotests: Expand test 061 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?windows-1252?Q?Beno=EEt_Canet?= Cc: Kevin Wolf , qemu-devel@nongnu.org, Stefan Hajnoczi On 31.07.2014 10:30, Beno=EEt Canet wrote: > The Saturday 26 Jul 2014 =E0 21:22:11 (+0200), Max Reitz wrote : >> Add some tests for progress output to 061. >> >> Signed-off-by: Max Reitz >> --- >> tests/qemu-iotests/061 | 27 +++++++++++++++++++++++++++ >> tests/qemu-iotests/061.out | 32 ++++++++++++++++++++++++++++++++ >> tests/qemu-iotests/group | 2 +- >> 3 files changed, 60 insertions(+), 1 deletion(-) >> >> diff --git a/tests/qemu-iotests/061 b/tests/qemu-iotests/061 >> index ab98def..fbb5897 100755 >> --- a/tests/qemu-iotests/061 >> +++ b/tests/qemu-iotests/061 >> @@ -209,6 +209,33 @@ $QEMU_IMG amend -o "compat=3D0.10" "$TEST_IMG" >> _check_test_img >> $QEMU_IO -c "read -P 0 0 64M" "$TEST_IMG" | _filter_qemu_io >> =20 >> +echo >> +echo "=3D=3D=3D Testing progress report without snapshot =3D=3D=3D" >> +echo >> +IMGOPTS=3D"compat=3D1.1" TEST_IMG=3D"$TEST_IMG.base" _make_test_img 4= G >> +IMGOPTS=3D"compat=3D1.1" _make_test_img -b "$TEST_IMG.base" 4G >> +$QEMU_IO -c "write -z 0 64k" \ >> + -c "write -z 1G 64k" \ >> + -c "write -z 2G 64k" \ >> + -c "write -z 3G 64k" "$TEST_IMG" | _filter_qemu_io >> +$QEMU_IMG amend -p -o "compat=3D0.10" "$TEST_IMG" >> +_check_test_img >> + >> +echo >> +echo "=3D=3D=3D Testing progress report with snapshot =3D=3D=3D" >> +echo >> +IMGOPTS=3D"compat=3D1.1" TEST_IMG=3D"$TEST_IMG.base" _make_test_img 4= G >> +IMGOPTS=3D"compat=3D1.1" _make_test_img -b "$TEST_IMG.base" 4G >> +$QEMU_IO -c "write -z 0 64k" \ >> + -c "write -z 1G 64k" \ >> + -c "write -z 2G 64k" \ >> + -c "write -z 3G 64k" "$TEST_IMG" | _filter_qemu_io >> +$QEMU_IMG snapshot -c foo "$TEST_IMG" > >> +# COW L2 table 0 > It's not clear what you are trying to achieve here since > it does not appear on the tests output. > Maybe that what you are testing is that it will output nothing > but you should notice it. Well, this made more use with the other version of the series with the=20 more correct progress output. If you just take a snapshot, all L2 tables will be shared between the=20 active L1 table and the snapshot's L1 table. Therefore, all zero=20 clusters will be expanded after the active L1 table has been iterated=20 over, because the snapshot's L1 table points to exactly the same L2=20 tables. When the snapshot's L1 table and its L2 tables are iterated=20 over, the zero cluster expansion function will find no zero clusters any=20 more and so you'd get exactly the same output as without a snapshot (0=20 %, 25 %, 50 %, 75 %, 100 %). Now, if you modify one of the L2 tables as in this test which creates a=20 second zero cluster in the first L2 table, that L2 table can no longer=20 be shared between the active and the snapshot L1 table. Instead, it=20 needs to be COW'ed and now there are five L2 tables in the image: Each=20 L1 table has an own version of the very first L2 table, and the other=20 three are shared. In the original version, this led to the following=20 progress output: 0 %, 22 %, 44 %, 67 %, 89 %, 100 % (the first step is=20 for the first active L2 table which contains *two* zero clusters; the=20 following three steps are for the three shared L2 tables which contain=20 one zero cluster each, but since they are shared between two L1 tables,=20 those are accounted for twice; and the last step is the L2 table owned=20 by the snapshot which only has a single zero cluster as well and is=20 referenced only once). In this version, the L2 zero cluster entries are not counted anymore;=20 all that counts are L1 entries. And since there are as many entries in=20 the first as in the second L1 table, we get the output 0 %, 13 %, 25 %,=20 38 %, 50 %, etc.. I guest I can drop this COW enforcement in this version of the series,=20 though, since it doesn't (and isn't supposed to) change anything. Max >> +$QEMU_IO -c "write -z 64k 64k" "$TEST_IMG" | _filter_qemu_io >> +$QEMU_IMG amend -p -o "compat=3D0.10" "$TEST_IMG" >> +_check_test_img >> + >> # success, all done >> echo "*** done" >> rm -f $seq.full >> diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out >> index e372470..352cca3 100644 >> --- a/tests/qemu-iotests/061.out >> +++ b/tests/qemu-iotests/061.out >> @@ -384,4 +384,36 @@ wrote 67108864/67108864 bytes at offset 0 >> No errors were found on the image. >> read 67108864/67108864 bytes at offset 0 >> 64 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> + >> +=3D=3D=3D Testing progress report without snapshot =3D=3D=3D >> + >> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=3DIMGFMT size=3D4294967296 >> +Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D4294967296 backin= g_file=3D'TEST_DIR/t.IMGFMT.base' >> +wrote 65536/65536 bytes at offset 0 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 1073741824 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 2147483648 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 3221225472 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> + (0.00/100%) >> (12.50/100%) >> (37.50/100%) >> (62.50/100%) >> (87.50/100%) >> (100.00/100%) >> +No errors were found on the image. >> + >> +=3D=3D=3D Testing progress report with snapshot =3D=3D=3D >> + >> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=3DIMGFMT size=3D4294967296 >> +Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D4294967296 backin= g_file=3D'TEST_DIR/t.IMGFMT.base' >> +wrote 65536/65536 bytes at offset 0 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 1073741824 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 2147483648 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 3221225472 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +wrote 65536/65536 bytes at offset 65536 >> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> + (0.00/100%) >> (6.25/100%) >> (18.75/100%) >> (31.25/100%) >> (43.75/100%) >> (56.25/100%) >> (68.75/100%) >> (81.25/100%) >> (93.75/100%) >> (100.00/100%) >> +No errors were found on the image. >> *** done >> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group >> index 6e67f61..b27e2f9 100644 >> --- a/tests/qemu-iotests/group >> +++ b/tests/qemu-iotests/group >> @@ -67,7 +67,7 @@ >> 058 rw auto quick >> 059 rw auto quick >> 060 rw auto quick >> -061 rw auto quick >> +061 rw auto >> 062 rw auto quick >> 063 rw auto quick >> 064 rw auto quick >> --=20 >> 2.0.3 >> >>