From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45037) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Viwqc-00068f-H6 for qemu-devel@nongnu.org; Tue, 19 Nov 2013 20:44:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ViwqX-00080p-4P for qemu-devel@nongnu.org; Tue, 19 Nov 2013 20:44:54 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41797) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ViwqW-00080g-SK for qemu-devel@nongnu.org; Tue, 19 Nov 2013 20:44:49 -0500 Message-ID: <528C1408.5070701@redhat.com> Date: Wed, 20 Nov 2013 09:44:40 +0800 From: Fam Zheng MIME-Version: 1.0 References: <1384758111-24143-1-git-send-email-famz@redhat.com> <20131119153141.GD3202@stefanha-thinkpad.redhat.com> In-Reply-To: <20131119153141.GD3202@stefanha-thinkpad.redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v5 0/4] Use blkdebug to make test deterministic List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: kwolf@redhat.com, pbonzini@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, mreitz@redhat.com On 2013=E5=B9=B411=E6=9C=8819=E6=97=A5 23:31, Stefan Hajnoczi wrote: > On Mon, Nov 18, 2013 at 03:01:47PM +0800, Fam Zheng wrote: >> This adds "remove_break" command to block, which removes a break point= defined >> with "break". It is used in iotests.py to pause and resume drive in bl= ock job >> cases to make the test deterministic. >> >> v5: Addressing Max's comments (thanks for reviewing) >> [02] Resume all the requests. >> [03] Fix event=3D"" case. Change default value to None. >> Change resume to bool. >> [04] Change resume to bool >> >> v4: [01] Added. >> [03] Add common method pair "pause_drive" and "resume_drive". >> [04] Also fix 040, 055. >> >> Fam Zheng (4): >> qemu-iotests: Drop local version of cancel_and_wait from 040 >> blkdebug: add "remove_break" command >> qemu-iotest: Add pause_drive and resume_drive methods >> qemu-iotests: Make test case 030, 040 and 055 deterministic >> >> block.c | 13 +++++++++++++ >> block/blkdebug.c | 27 +++++++++++++++++++++++++++ >> include/block/block.h | 1 + >> include/block/block_int.h | 2 ++ >> qemu-io-cmds.c | 22 ++++++++++++++++++++++ >> tests/qemu-iotests/030 | 16 +++++++++++----- >> tests/qemu-iotests/040 | 19 +++---------------- >> tests/qemu-iotests/055 | 15 +++++++++++---- >> tests/qemu-iotests/iotests.py | 18 +++++++++++++++++- >> 9 files changed, 107 insertions(+), 26 deletions(-) > > I get this failure after applying the patches onto my block-next tree: > Interesting. I guess this is what happens here: - Pause drive. - Start block job. - Block job send first IO request. - Request pended into blkdebug suspended request queue. - Block job pause. - Resume drive. - Query block job #1. The first IO is not completed (luckily): offset=20 =3D=3D 0. - Script sleep for 1 sec. The first IO request continues and=20 completes, so the offset of block job becomes 65536. - Query block job #2. The offset =3D=3D 65536. Asserssion failed. This is what happened when I tested it before posting: - Pause drive. - Start block job. - "block-job-pause", before it even entering the IO loop. - Resume drive. But the block job is paused, no IO submitted. - Query block job #1. Offset is 0. - Sleep for 1 second. - Query block job #2. Offset is 0. (succeed by luck) - Block job resume, starts to IO. - Wait until completed - ... Apparently, need some improvements to make this more deterministic. :) Fam > $ ./check -qcow2 055 > QEMU -- /home/stefanha/qemu/tests/qemu-iotests/qemu > QEMU_IMG -- /home/stefanha/qemu/tests/qemu-iotests/qemu-img > QEMU_IO -- /home/stefanha/qemu/tests/qemu-iotests/qemu-io > IMGFMT -- qcow2 (compat=3D1.1) > IMGPROTO -- file > PLATFORM -- Linux/x86_64 stefanha-thinkpad 3.11.8-300.fc20.x86_64 > SOCKET_SCM_HELPER -- > > 055 9s ... [failed, exit status 1] - output mismatch (see 055.out.bad) > --- 055.out 2013-10-08 13:23:38.412934858 +0200 > +++ 055.out.bad 2013-11-19 16:30:31.100351135 +0100 > @@ -1,5 +1,15 @@ > -.............. > +.......F...... > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +FAIL: test_pause (__main__.TestSingleDrive) > +---------------------------------------------------------------------- > +Traceback (most recent call last): > + File "./055", line 80, in test_pause > + self.assert_qmp(result, 'return[0]/offset', offset) > + File "/home/stefanha/qemu/tests/qemu-iotests/iotests.py", line 232, = in assert_qmp > + self.assertEqual(result, value, 'values not equal "%s" and "%s"' %= (str(result), str(value))) > +AssertionError: values not equal "65536" and "0" > + > ---------------------------------------------------------------------= - > Ran 14 tests > > -OK > +FAILED (failures=3D1) > Failures: 055 > Failed 1 of 1 tests >