From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
Ping Fan Liu <pingfank@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>,
alex@alex.org.uk, Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v6 05/18] tests: adjust test-thread-pool to new aio_poll() semantics
Date: Mon, 29 Jul 2013 15:51:08 +0800 [thread overview]
Message-ID: <51F61EEC.7040904@linux.vnet.ibm.com> (raw)
In-Reply-To: <1374765505-14356-6-git-send-email-stefanha@redhat.com>
I am confused for sometime about the reason of the change, I think
it can be concluded as: "The meaning of aio_poll() will be changed, so
change the caller in this test case."
Reviewed-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
> aio_poll(ctx, true) will soon block when fd handlers have been set.
> Previously aio_poll() would return early if all .io_flush() returned
> false. This means we need to check the equivalent of the .io_flush()
> condition *before* calling aio_poll(ctx, true) to avoid deadlock.
>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
> tests/test-thread-pool.c | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/tests/test-thread-pool.c b/tests/test-thread-pool.c
> index b62338f..8188d1a 100644
> --- a/tests/test-thread-pool.c
> +++ b/tests/test-thread-pool.c
> @@ -40,19 +40,13 @@ static void done_cb(void *opaque, int ret)
> active--;
> }
>
> -/* Wait until all aio and bh activity has finished */
> -static void qemu_aio_wait_all(void)
> -{
> - while (aio_poll(ctx, true)) {
> - /* Do nothing */
> - }
> -}
> -
> static void test_submit(void)
> {
> WorkerTestData data = { .n = 0 };
> thread_pool_submit(pool, worker_cb, &data);
> - qemu_aio_wait_all();
> + while (data.n == 0) {
> + aio_poll(ctx, true);
> + }
> g_assert_cmpint(data.n, ==, 1);
> }
>
> @@ -65,7 +59,9 @@ static void test_submit_aio(void)
> /* The callbacks are not called until after the first wait. */
> active = 1;
> g_assert_cmpint(data.ret, ==, -EINPROGRESS);
> - qemu_aio_wait_all();
> + while (data.ret == -EINPROGRESS) {
> + aio_poll(ctx, true);
> + }
> g_assert_cmpint(active, ==, 0);
> g_assert_cmpint(data.n, ==, 1);
> g_assert_cmpint(data.ret, ==, 0);
> @@ -103,7 +99,9 @@ static void test_submit_co(void)
>
> /* qemu_aio_wait_all will execute the rest of the coroutine. */
>
> - qemu_aio_wait_all();
> + while (data.ret == -EINPROGRESS) {
> + aio_poll(ctx, true);
> + }
>
> /* Back here after the coroutine has finished. */
>
> @@ -187,7 +185,9 @@ static void test_cancel(void)
> }
>
> /* Finish execution and execute any remaining callbacks. */
> - qemu_aio_wait_all();
> + while (active > 0) {
> + aio_poll(ctx, true);
> + }
> g_assert_cmpint(active, ==, 0);
> for (i = 0; i < 100; i++) {
> if (data[i].n == 3) {
>
--
Best Regards
Wenchao Xia
next prev parent reply other threads:[~2013-07-29 7:51 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-25 15:18 [Qemu-devel] [PATCH v6 00/18] aio: drop io_flush() Stefan Hajnoczi
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 01/18] block: ensure bdrv_drain_all() works during bdrv_delete() Stefan Hajnoczi
2013-07-26 6:43 ` Wenchao Xia
2013-08-06 15:06 ` Stefan Hajnoczi
2013-08-07 2:42 ` Wenchao Xia
2013-08-07 7:31 ` Stefan Hajnoczi
2013-08-07 7:42 ` Stefan Hajnoczi
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 02/18] block: stop relying on io_flush() in bdrv_drain_all() Stefan Hajnoczi
2013-07-29 7:01 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 03/18] dataplane/virtio-blk: check exit conditions before aio_poll() Stefan Hajnoczi
2013-07-26 16:44 ` Jeff Cody
2013-07-29 7:10 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 04/18] tests: adjust test-aio to new aio_poll() semantics Stefan Hajnoczi
2013-07-29 7:39 ` Wenchao Xia
2013-07-29 8:24 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 05/18] tests: adjust test-thread-pool " Stefan Hajnoczi
2013-07-29 7:51 ` Wenchao Xia [this message]
2013-07-29 14:26 ` Stefan Hajnoczi
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 06/18] aio: stop using .io_flush() Stefan Hajnoczi
2013-07-26 16:10 ` Jeff Cody
2013-07-26 16:25 ` Paolo Bonzini
2013-07-26 16:36 ` Jeff Cody
2013-07-26 16:43 ` Jeff Cody
2013-07-29 8:08 ` Wenchao Xia
2013-07-29 14:32 ` Stefan Hajnoczi
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 07/18] block/curl: drop curl_aio_flush() Stefan Hajnoczi
2013-07-29 8:11 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 08/18] block/gluster: drop qemu_gluster_aio_flush_cb() Stefan Hajnoczi
2013-07-29 8:17 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 09/18] block/iscsi: drop iscsi_process_flush() Stefan Hajnoczi
2013-07-29 8:17 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 10/18] block/linux-aio: drop qemu_laio_completion_cb() Stefan Hajnoczi
2013-07-29 8:19 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 11/18] block/nbd: drop nbd_have_request() Stefan Hajnoczi
2013-07-29 8:19 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 12/18] block/rbd: drop qemu_rbd_aio_flush_cb() Stefan Hajnoczi
2013-07-29 8:20 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 13/18] block/sheepdog: drop have_co_req() and aio_flush_request() Stefan Hajnoczi
2013-07-26 5:50 ` MORITA Kazutaka
2013-07-29 8:24 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 14/18] block/ssh: drop return_true() Stefan Hajnoczi
2013-07-29 8:25 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 15/18] dataplane/virtio-blk: drop flush_true() and flush_io() Stefan Hajnoczi
2013-07-29 8:32 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 16/18] thread-pool: drop thread_pool_active() Stefan Hajnoczi
2013-07-29 8:33 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 17/18] tests: drop event_active_cb() Stefan Hajnoczi
2013-07-29 8:34 ` Wenchao Xia
2013-07-25 15:18 ` [Qemu-devel] [PATCH v6 18/18] aio: drop io_flush argument Stefan Hajnoczi
2013-07-29 8:37 ` Wenchao Xia
2013-08-06 15:07 ` [Qemu-devel] [PATCH v6 00/18] aio: drop io_flush() Stefan Hajnoczi
2013-08-09 7:14 ` Wenchao Xia
2013-08-09 8:31 ` Stefan Hajnoczi
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=51F61EEC.7040904@linux.vnet.ibm.com \
--to=xiawenc@linux.vnet.ibm.com \
--cc=alex@alex.org.uk \
--cc=kwolf@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=pingfank@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.