From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49636) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2l7i-0003sJ-1p for qemu-devel@nongnu.org; Fri, 26 Jul 2013 12:44:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V2l7e-0004i5-Ro for qemu-devel@nongnu.org; Fri, 26 Jul 2013 12:44:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50774) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2l7e-0004ht-IR for qemu-devel@nongnu.org; Fri, 26 Jul 2013 12:44:06 -0400 Date: Fri, 26 Jul 2013 12:43:55 -0400 From: Jeff Cody Message-ID: <20130726164355.GB28317@localhost.localdomain> References: <1374765505-14356-1-git-send-email-stefanha@redhat.com> <1374765505-14356-7-git-send-email-stefanha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1374765505-14356-7-git-send-email-stefanha@redhat.com> Subject: Re: [Qemu-devel] [PATCH v6 06/18] aio: stop using .io_flush() 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 On Thu, Jul 25, 2013 at 05:18:13PM +0200, Stefan Hajnoczi wrote: > Now that aio_poll() users check their termination condition themselves, > it is no longer necessary to call .io_flush() handlers. > > The behavior of aio_poll() changes as follows: > > 1. .io_flush() is no longer invoked and file descriptors are *always* > monitored. Previously returning 0 from .io_flush() would skip this file > descriptor. > > Due to this change it is essential to check that requests are pending > before calling qemu_aio_wait(). Failure to do so means we block, for > example, waiting for an idle iSCSI socket to become readable when there > are no requests. Currently all qemu_aio_wait()/aio_poll() callers check > before calling. > > 2. aio_poll() now returns true if progress was made (BH or fd handlers > executed) and false otherwise. Previously it would return true whenever > 'busy', which means that .io_flush() returned true. The 'busy' concept > no longer exists so just progress is returned. > > Due to this change we need to update tests/test-aio.c which asserts > aio_poll() return values. Note that QEMU doesn't actually rely on these > return values so only tests/test-aio.c cares. > > Note that ctx->notifier, the EventNotifier fd used for aio_notify(), is > now handled as a special case. This is a little ugly but maintains > aio_poll() semantics, i.e. aio_notify() does not count as 'progress' and > aio_poll() avoids blocking when the user has not set any fd handlers yet. > > Patches after this remove .io_flush() handler code until we can finally > drop the io_flush arguments to aio_set_fd_handler() and friends. > > Reviewed-by: Paolo Bonzini > Signed-off-by: Stefan Hajnoczi > --- > aio-posix.c | 29 +++++++++-------------------- > aio-win32.c | 34 ++++++++++++++-------------------- > tests/test-aio.c | 10 +++++----- > 3 files changed, 28 insertions(+), 45 deletions(-) > Reviewed-by: Jeff Cody