diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-11-10 17:25:15 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-11-10 17:25:15 +0000 |
commit | 53fb28d10da4eb41b77139f3458be08fb6f658e4 (patch) | |
tree | cf8dd5fce01edf4430267603d50553d6f1225ef0 | |
parent | 4ffa88c99c54d2a30f79e3dbecec50b023eff1c8 (diff) | |
parent | ef6dada8b44e1e7c4bec5c1115903af9af415b50 (diff) |
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging
Pull request
v2:
* v1 emails 2/3 and 3/3 weren't sent due to an email failure
* Included Sergio's updated wording in the commit description
# gpg: Signature made Wed 08 Nov 2017 19:12:01 GMT
# gpg: using RSA key 0x9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
# gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>"
# Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35 775A 9CA4 ABB3 81AB 73C8
* remotes/stefanha/tags/block-pull-request:
util/async: use atomic_mb_set in qemu_bh_cancel
tests-aio-multithread: fix /aio/multi/schedule race condition
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | tests/test-aio-multithread.c | 5 | ||||
-rw-r--r-- | util/async.c | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/tests/test-aio-multithread.c b/tests/test-aio-multithread.c index 549d784915..d396185972 100644 --- a/tests/test-aio-multithread.c +++ b/tests/test-aio-multithread.c @@ -144,17 +144,16 @@ static void finish_cb(void *opaque) static coroutine_fn void test_multi_co_schedule_entry(void *opaque) { g_assert(to_schedule[id] == NULL); - atomic_mb_set(&to_schedule[id], qemu_coroutine_self()); while (!atomic_mb_read(&now_stopping)) { int n; n = g_test_rand_int_range(0, NUM_CONTEXTS); schedule_next(n); - qemu_coroutine_yield(); - g_assert(to_schedule[id] == NULL); atomic_mb_set(&to_schedule[id], qemu_coroutine_self()); + qemu_coroutine_yield(); + g_assert(to_schedule[id] == NULL); } } diff --git a/util/async.c b/util/async.c index 355af73ee7..0e1bd8780a 100644 --- a/util/async.c +++ b/util/async.c @@ -174,7 +174,7 @@ void qemu_bh_schedule(QEMUBH *bh) */ void qemu_bh_cancel(QEMUBH *bh) { - bh->scheduled = 0; + atomic_mb_set(&bh->scheduled, 0); } /* This func is async.The bottom half will do the delete action at the finial |