From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:34665) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJlW2-0004Fs-Uf for qemu-devel@nongnu.org; Fri, 28 Oct 2011 08:26:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RJlW1-0002vT-KO for qemu-devel@nongnu.org; Fri, 28 Oct 2011 08:26:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13711) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJlW1-0002v5-3X for qemu-devel@nongnu.org; Fri, 28 Oct 2011 08:26:29 -0400 Message-ID: <4EAAA025.100@redhat.com> Date: Fri, 28 Oct 2011 14:29:25 +0200 From: Kevin Wolf MIME-Version: 1.0 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> In-Reply-To: <4EAA9700.6030605@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] block: avoid SIGUSR2 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Lucas Meneghel Rodrigues , aliguori@us.ibm.com, Stefan Hajnoczi , qemu-devel@nongnu.org, Frediano Ziglio , Cleber Rosa 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. Kevin