From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KTH6j-000127-Ve for qemu-devel@nongnu.org; Wed, 13 Aug 2008 10:13:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KTH6i-000113-91 for qemu-devel@nongnu.org; Wed, 13 Aug 2008 10:13:49 -0400 Received: from [199.232.76.173] (port=37360 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KTH6h-00010y-Vi for qemu-devel@nongnu.org; Wed, 13 Aug 2008 10:13:48 -0400 Received: from il.qumranet.com ([212.179.150.194]:10205) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KTH6i-0004lq-2w for qemu-devel@nongnu.org; Wed, 13 Aug 2008 10:13:48 -0400 Received: from gleb-debian.qumranet.com (gleb-debian.qumranet.com.qumranet.com [172.16.15.143]) by il.qumranet.com (Postfix) with ESMTP id 819A9250310 for ; Wed, 13 Aug 2008 17:13:46 +0300 (IDT) Date: Wed, 13 Aug 2008 17:13:46 +0300 From: Gleb Natapov Subject: Re: [Qemu-devel] [PATCH] Flush pending AIO on reboot and shutdown. Message-ID: <20080813141346.GC17567@minantech.com> References: <20080813132358.17672.68212.stgit@gleb-debian.qumranet.com.qumranet.com> <48A2E732.4040501@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <48A2E732.4040501@codemonkey.ws> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On Wed, Aug 13, 2008 at 08:52:50AM -0500, Anthony Liguori wrote: > Gleb Natapov wrote: >> If there is outstanding IDE IO when BIOS starts execution then IDE >> commands sent by BIOS will interfere with it and will leave IDE >> subsystem in unpredictable state. This can happen when system reboots >> unexpectedly without waiting for IO completion. Flushing IO before exit >> prevents data lose. >> >> Signed-off-by: Gleb Natapov >> --- >> >> vl.c | 2 ++ >> 1 files changed, 2 insertions(+), 0 deletions(-) >> >> diff --git a/vl.c b/vl.c >> index e42ae64..afa2a3a 100644 >> --- a/vl.c >> +++ b/vl.c >> @@ -7553,6 +7553,7 @@ static int main_loop(void) >> if (reset_requested) { >> reset_requested = 0; >> qemu_system_reset(); >> + qemu_aio_flush(); >> > > Perhaps the aio block layer should do qemu_register_reset() with a > handler that does a flush. > I though about doing it this way, but then I saw that qemu_register_reset() is used for HW reset notification only. I don't think that hw/ide.c is the right place to register the notifier though, so I decided to call it explicitly. Do you think I should do qemu_register_reset() in block.c? -- Gleb.