From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58295) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UzMmK-00011e-Tp for qemu-devel@nongnu.org; Wed, 17 Jul 2013 04:08:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UzMmI-0006dy-7x for qemu-devel@nongnu.org; Wed, 17 Jul 2013 04:08:04 -0400 Received: from mail.avalus.com ([2001:41c8:10:1dd::10]:46740) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UzMmI-0006df-2Q for qemu-devel@nongnu.org; Wed, 17 Jul 2013 04:08:02 -0400 Date: Wed, 17 Jul 2013 09:07:47 +0100 From: Alex Bligh Message-ID: <9EDD71F21C4D65014805FB9B@nimrod.local> In-Reply-To: <20130717030230.GA27807@stefanha-thinkpad.redhat.com> References: <51E4613D.9000106@redhat.com> <44590808AF4A6E7DC093637A@nimrod.local> <51E4E54A.10908@redhat.com> <51E4F77C.2090509@redhat.com> <794E19D97CCC267CCBFA8397@Ximines.local> <51E56A1A.50502@redhat.com> <19631228D7B62545DC6A2928@Ximines.local> <51E57AF3.1050409@redhat.com> <20130717030230.GA27807@stefanha-thinkpad.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Subject: Re: [Qemu-devel] [PATCH] [RFC] aio/async: Add timed bottom-halves Reply-To: Alex Bligh List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Kevin Wolf , Anthony Liguori , Alex Bligh , qemu-devel@nongnu.org, Stefan Hajnoczi , Paolo Bonzini , rth@twiddle.net Stefan, --On 17 July 2013 11:02:30 +0800 Stefan Hajnoczi wrote: > The steps to achieving this: > > 1. Drop alarm timers from qemu-timer.c and calculate g_poll() timeout > instead for the main loop. > > 2. Introduce a per-AioContext aio_ctx_clock that can be used with > qemu_new_timer() to create a QEMUTimer that expires during > aio_poll(). > > 3. Calculate g_poll() timeout for aio_ctx_clock in aio_poll(). A couple of questions: 1. How would this work where the user has no main loop, e.g. qemu-img? A block driver may well still need timers. 2. Are we guaranteed that no aio_poll user can repeatedly call aio_poll without exiting to the main loop? 3. Is it safe to anything you can do in a bh in a timer? IE are users every going to need to schedule a bh from a timer? If so, this seems a bit long winded for users that want bh functionality. The timed bh solution (which I'm by no means set on) can use any QEMUClock in the bh, so you get to choose the clock per BH, not per AioContext, which may or may not have advantages. -- Alex Bligh