From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KTHwz-0003hx-3C for qemu-devel@nongnu.org; Wed, 13 Aug 2008 11:07:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KTHwx-0003hU-Iv for qemu-devel@nongnu.org; Wed, 13 Aug 2008 11:07:48 -0400 Received: from [199.232.76.173] (port=37660 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KTHwx-0003hR-FE for qemu-devel@nongnu.org; Wed, 13 Aug 2008 11:07:47 -0400 Received: from wx-out-0506.google.com ([66.249.82.239]:56693) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KTHwx-0007WO-0o for qemu-devel@nongnu.org; Wed, 13 Aug 2008 11:07:47 -0400 Received: by wx-out-0506.google.com with SMTP id h29so44906wxd.4 for ; Wed, 13 Aug 2008 08:07:46 -0700 (PDT) Message-ID: <48A2F89A.20609@codemonkey.ws> Date: Wed, 13 Aug 2008 10:07:06 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] Flush pending AIO on reboot and shutdown. References: <20080813132358.17672.68212.stgit@gleb-debian.qumranet.com.qumranet.com> <48A2E732.4040501@codemonkey.ws> <20080813141346.GC17567@minantech.com> In-Reply-To: <20080813141346.GC17567@minantech.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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 Gleb Natapov wrote: > 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? > But shouldn't the various disk types be the ones to flush their outstanding IO on reset? Regards, Anthony Liguori > -- > Gleb. > > >