From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60722) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UsdON-0006Az-IZ for qemu-devel@nongnu.org; Fri, 28 Jun 2013 14:27:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UsdOL-0000RN-Lb for qemu-devel@nongnu.org; Fri, 28 Jun 2013 14:27:31 -0400 Received: from mail-ee0-x229.google.com ([2a00:1450:4013:c00::229]:46018) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UsdOL-0000RI-Cc for qemu-devel@nongnu.org; Fri, 28 Jun 2013 14:27:29 -0400 Received: by mail-ee0-f41.google.com with SMTP id d17so1209113eek.28 for ; Fri, 28 Jun 2013 11:27:28 -0700 (PDT) Received: from playground.lan (net-37-116-217-184.cust.dsl.vodafone.it. [37.116.217.184]) by mx.google.com with ESMTPSA id o5sm12035344eef.5.2013.06.28.11.27.26 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 28 Jun 2013 11:27:27 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 28 Jun 2013 20:26:35 +0200 Message-Id: <1372444009-11544-17-git-send-email-pbonzini@redhat.com> In-Reply-To: <1372444009-11544-1-git-send-email-pbonzini@redhat.com> References: <1372444009-11544-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 16/30] block: report RCU quiescent states List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org The aio workers may spend a long time executing I/O operations; mark that time as an extended quiescent state. Signed-off-by: Paolo Bonzini --- block/raw-posix.c | 3 +++ block/raw-win32.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/block/raw-posix.c b/block/raw-posix.c index c0ccf27..637fe8a 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -26,6 +26,7 @@ #include "qemu/log.h" #include "block/block_int.h" #include "qemu/module.h" +#include "qemu/rcu.h" #include "trace.h" #include "block/thread-pool.h" #include "qemu/iov.h" @@ -735,6 +736,7 @@ static int aio_worker(void *arg) RawPosixAIOData *aiocb = arg; ssize_t ret = 0; + rcu_thread_offline(); switch (aiocb->aio_type & QEMU_AIO_TYPE_MASK) { case QEMU_AIO_READ: ret = handle_aiocb_rw(aiocb); @@ -774,6 +776,7 @@ static int aio_worker(void *arg) } g_slice_free(RawPosixAIOData, aiocb); + rcu_thread_online(); return ret; } diff --git a/block/raw-win32.c b/block/raw-win32.c index 7c03b6d..fc573b7 100644 --- a/block/raw-win32.c +++ b/block/raw-win32.c @@ -25,6 +25,7 @@ #include "qemu/timer.h" #include "block/block_int.h" #include "qemu/module.h" +#include "qemu/rcu.h" #include "raw-aio.h" #include "trace.h" #include "block/thread-pool.h" @@ -99,6 +100,7 @@ static int aio_worker(void *arg) ssize_t ret = 0; size_t count; + rcu_thread_offline(); switch (aiocb->aio_type & QEMU_AIO_TYPE_MASK) { case QEMU_AIO_READ: count = handle_aiocb_rw(aiocb); @@ -136,6 +138,7 @@ static int aio_worker(void *arg) } g_slice_free(RawWin32AIOData, aiocb); + rcu_thread_online(); return ret; } -- 1.8.1.4