From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V3i46-00027s-4g for qemu-devel@nongnu.org; Mon, 29 Jul 2013 03:40:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V3i3w-0007oe-A3 for qemu-devel@nongnu.org; Mon, 29 Jul 2013 03:40:22 -0400 Received: from e23smtp03.au.ibm.com ([202.81.31.145]:55081) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V3i3v-0007nr-OG for qemu-devel@nongnu.org; Mon, 29 Jul 2013 03:40:12 -0400 Received: from /spool/local by e23smtp03.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 29 Jul 2013 17:29:44 +1000 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [9.190.235.152]) by d23dlp03.au.ibm.com (Postfix) with ESMTP id 86BCD3578053 for ; Mon, 29 Jul 2013 17:40:03 +1000 (EST) Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r6T7OOFx54526096 for ; Mon, 29 Jul 2013 17:24:24 +1000 Received: from d23av01.au.ibm.com (loopback [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r6T7e2IO014884 for ; Mon, 29 Jul 2013 17:40:02 +1000 Message-ID: <51F61C44.4060900@linux.vnet.ibm.com> Date: Mon, 29 Jul 2013 15:39:48 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1374765505-14356-1-git-send-email-stefanha@redhat.com> <1374765505-14356-5-git-send-email-stefanha@redhat.com> In-Reply-To: <1374765505-14356-5-git-send-email-stefanha@redhat.com> Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 04/18] tests: adjust test-aio to new aio_poll() semantics List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Kevin Wolf , Ping Fan Liu , qemu-devel@nongnu.org, Michael Roth , alex@alex.org.uk, Paolo Bonzini Reviewed-by: Wenchao Xia > aio_poll(ctx, true) will soon block if any fd handlers have been set. > Previously it would only block when .io_flush() returned true. > > This means that callers must check their wait condition *before* > aio_poll() to avoid deadlock. > > Reviewed-by: Paolo Bonzini > Signed-off-by: Stefan Hajnoczi > --- > tests/test-aio.c | 26 +++++++++++++++++--------- > 1 file changed, 17 insertions(+), 9 deletions(-) > > diff --git a/tests/test-aio.c b/tests/test-aio.c > index c173870..20bf5e6 100644 > --- a/tests/test-aio.c > +++ b/tests/test-aio.c > @@ -15,6 +15,13 @@ > > AioContext *ctx; > > +typedef struct { > + EventNotifier e; > + int n; > + int active; > + bool auto_set; > +} EventNotifierTestData; > + > /* Wait until there are no more BHs or AIO requests */ > static void wait_for_aio(void) > { > @@ -23,6 +30,14 @@ static void wait_for_aio(void) > } > } > > +/* Wait until event notifier becomes inactive */ > +static void wait_until_inactive(EventNotifierTestData *data) > +{ > + while (data->active > 0) { > + aio_poll(ctx, true); > + } > +} > + > /* Simple callbacks for testing. */ > > typedef struct { > @@ -50,13 +65,6 @@ static void bh_delete_cb(void *opaque) > } > } > > -typedef struct { > - EventNotifier e; > - int n; > - int active; > - bool auto_set; > -} EventNotifierTestData; > - > static int event_active_cb(EventNotifier *e) > { > EventNotifierTestData *data = container_of(e, EventNotifierTestData, e); > @@ -281,7 +289,7 @@ static void test_flush_event_notifier(void) > g_assert_cmpint(data.active, ==, 9); > g_assert(aio_poll(ctx, false)); > > - wait_for_aio(); > + wait_until_inactive(&data); > g_assert_cmpint(data.n, ==, 10); > g_assert_cmpint(data.active, ==, 0); > g_assert(!aio_poll(ctx, false)); > @@ -325,7 +333,7 @@ static void test_wait_event_notifier_noflush(void) > g_assert_cmpint(data.n, ==, 2); > > event_notifier_set(&dummy.e); > - wait_for_aio(); > + wait_until_inactive(&dummy); > g_assert_cmpint(data.n, ==, 2); > g_assert_cmpint(dummy.n, ==, 1); > g_assert_cmpint(dummy.active, ==, 0); > -- Best Regards Wenchao Xia