From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:44007) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJlan-0005y9-Py for qemu-devel@nongnu.org; Fri, 28 Oct 2011 08:31:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RJlaj-0004hY-L3 for qemu-devel@nongnu.org; Fri, 28 Oct 2011 08:31:25 -0400 Received: from mail-ww0-f53.google.com ([74.125.82.53]:33888) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJlaj-0004hS-EU for qemu-devel@nongnu.org; Fri, 28 Oct 2011 08:31:21 -0400 Received: by wwi36 with SMTP id 36so5189329wwi.10 for ; Fri, 28 Oct 2011 05:31:20 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <4EAAA025.100@redhat.com> References: <1316443033-6489-1-git-send-email-freddy77@gmail.com> <4EA95BFF.6070807@redhat.com> <20111027135731.GA21052@stefanha-thinkpad.localdomain> <4EA96776.6020807@redhat.com> <4EA96B82.6070507@redhat.com> <4EAA9310.2030705@redhat.com> <4EAA9700.6030605@redhat.com> <4EAAA025.100@redhat.com> Date: Fri, 28 Oct 2011 13:31:20 +0100 Message-ID: From: Stefan Hajnoczi Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [Qemu-devel] [PATCH v2] block: avoid SIGUSR2 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Zhi Yong Wu Cc: Lucas Meneghel Rodrigues , Kevin Wolf , aliguori@us.ibm.com, Stefan Hajnoczi , qemu-devel@nongnu.org, Frediano Ziglio , Cleber Rosa , Paolo Bonzini On Fri, Oct 28, 2011 at 1:29 PM, Kevin Wolf wrote: > Am 28.10.2011 13:50, schrieb Paolo Bonzini: >> On 10/28/2011 01:33 PM, Kevin Wolf wrote: >>> I'm afraid that we can only avoid things like this reliably if we >>> convert all devices to be direct users of AIO/coroutines. The current >>> block layer infrastructure doesn't emulate the behaviour of bdrv_read >>> accurately as bottom halves can be run in the nested main loop. >>> >>> For floppy, the following seems to be a quick fix (Lucas, Cleber, does >>> this solve your problems?), though it's not very satisfying. And I'm not >>> quite sure yet why it doesn't always happen with kill() in >>> posix-aio-compat.c. >> >> Another "fix" is to change idle bottom halves (at least the one in >> hw/dma.c) to 10ms timers. > > Which would be using the fact that timers are only executed in the real > main loop. Which makes me wonder if it would be enough for floppy if we > changed qemu_bh_poll() to take a bool run_idle_bhs that would be true in > the main loop and false an qemu_aio_wait(). > > Still this wouldn't be a general solution as normal BHs have the very > same problem if they are scheduled before a bdrv_read/write call. To > solve that I guess we'd have to reintroduce AsyncContext, but it has its > own problems and was removed for a reason. > > Or we make some serious effort now to convert devices to AIO. Zhi Yong: We were just talking about converting devices to aio. If you have time to do that for fdc, sd, or any other synchronous API users in hw/ that would be helpful. Please let us know which device you are refactoring so we don't duplicate work. Stefan