From: Stefan Hajnoczi <stefanha@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, Kevin Wolf <kwolf@redhat.com>,
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
qemu-block@nongnu.org, Jeff Cody <jcody@redhat.com>,
Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 1/2] qemu-iotests: reduce chance of races in 185
Date: Thu, 10 May 2018 11:05:37 +0100 [thread overview]
Message-ID: <20180510100537.GP1296@stefanha-x1.localdomain> (raw)
In-Reply-To: <aa220f7d-9aa1-f32d-14f0-35d6a8161032@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2239 bytes --]
On Tue, May 08, 2018 at 09:26:03AM -0500, Eric Blake wrote:
> On 05/08/2018 08:54 AM, Stefan Hajnoczi wrote:
> > Commit 8565c3ab537e78f3e69977ec2c609dc9417a806e ("qemu-iotests: fix
> > 185") identified a race condition in a sub-test.
> >
> > Similar issues also affect the other sub-tests. If disk I/O completes
> > quickly, it races with the QMP 'quit' command. This causes spurious
> > test failures because QMP events are emitted in an unpredictable order.
> >
> > This test relies on QEMU internals and there is no QMP API for getting
> > deterministic behavior needed to make this test 100% reliable. At the
> > same time, the test is useful and it would be a shame to remove it.
> >
> > Add sleep 0.5 to reduce the chance of races. This is not a real fix but
> > appears to reduce spurious failures in practice.
> >
> > Cc: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> > tests/qemu-iotests/185 | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
>
> I'm not opposed to this patch, but is there any way to write the test to
> take both events in either order, without logging the events as they arrive,
> but instead summarizing in a deterministic order which events were received
> after the fact? That way, no matter which way the race is won, we merely
> log that we got two expected events, and could avoid the extra sleep.
I don't think there is a practical way of doing that without big changes
to the test. It could be rewritten in Python to make filtering the QMP
events easier.
Hiding the race doesn't solve the deeper problem though: the test case
doesn't exercise the same code path each time. The test should really
cover all cancellation points in the block job lifecycle instead of just
one at random. If we solve this problem then we don't need to filter
the QMP event sequence.
Maybe it can be done with blkdebug. If not then maybe a blockjobdbg
interface is necessary to perform deterministic tests (eliminating the
need for the ratelimiting trick used by this test!).
Please share ideas, but I think this is a long-term item that shouldn't
block this series.
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
next prev parent reply other threads:[~2018-05-10 10:05 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-08 13:54 [Qemu-devel] [PATCH v2 0/2] qemu-iotests: post-QEMU 2.12 fixes for 185 Stefan Hajnoczi
2018-05-08 13:54 ` [Qemu-devel] [PATCH v2 1/2] qemu-iotests: reduce chance of races in 185 Stefan Hajnoczi
2018-05-08 14:26 ` Eric Blake
2018-05-10 10:05 ` Stefan Hajnoczi [this message]
2018-05-10 13:24 ` Eric Blake
2018-05-10 14:01 ` Vladimir Sementsov-Ogievskiy
2018-05-08 13:54 ` [Qemu-devel] [PATCH v2 2/2] blockjob: do not cancel timer in resume Stefan Hajnoczi
2018-05-08 14:28 ` Eric Blake
2018-05-14 8:35 ` QingFeng Hao
2018-05-14 11:40 ` [Qemu-devel] [PATCH v2 0/2] qemu-iotests: post-QEMU 2.12 fixes for 185 Jeff Cody
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=20180510100537.GP1296@stefanha-x1.localdomain \
--to=stefanha@redhat.com \
--cc=eblake@redhat.com \
--cc=jcody@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@virtuozzo.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).