From 05e514b1d4d5bd4209e2c8bbc76ff05c85a235f3 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 21 Jul 2015 16:07:53 +0200 Subject: AioContext: optimize clearing the EventNotifier It is pretty rare for aio_notify to actually set the EventNotifier. It can happen with worker threads such as thread-pool.c's, but otherwise it should never be set thanks to the ctx->notify_me optimization. The previous patch, unfortunately, added an unconditional call to event_notifier_test_and_clear; now add a userspace fast path that avoids the call. Note that it is not possible to do the same with event_notifier_set; it would break, as proved (again) by the included formal model. This patch survived over 3000 reboots on aarch64 KVM. Signed-off-by: Paolo Bonzini Reviewed-by: Fam Zheng Tested-by: Richard W.M. Jones Message-id: 1437487673-23740-7-git-send-email-pbonzini@redhat.com Signed-off-by: Stefan Hajnoczi --- aio-posix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'aio-posix.c') diff --git a/aio-posix.c b/aio-posix.c index 5c8b266..d477033 100644 --- a/aio-posix.c +++ b/aio-posix.c @@ -276,7 +276,7 @@ bool aio_poll(AioContext *ctx, bool blocking) aio_context_acquire(ctx); } - event_notifier_test_and_clear(&ctx->notifier); + aio_notify_accept(ctx); /* if we have any readable fds, dispatch event */ if (ret > 0) { -- cgit v1.1