From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Khxo0-0003SB-1r for qemu-devel@nongnu.org; Mon, 22 Sep 2008 22:39:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Khxnz-0003Rw-7K for qemu-devel@nongnu.org; Mon, 22 Sep 2008 22:39:11 -0400 Received: from [199.232.76.173] (port=58285 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Khxny-0003Rt-VX for qemu-devel@nongnu.org; Mon, 22 Sep 2008 22:39:11 -0400 Received: from e32.co.us.ibm.com ([32.97.110.150]:55942) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Khxny-0003Nh-CR for qemu-devel@nongnu.org; Mon, 22 Sep 2008 22:39:10 -0400 Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106]) by e32.co.us.ibm.com (8.13.8/8.13.8) with ESMTP id m8N2V8Gc014085 for ; Mon, 22 Sep 2008 22:31:08 -0400 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay04.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id m8N2d7FH210530 for ; Mon, 22 Sep 2008 20:39:07 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m8N8d6Xl003275 for ; Tue, 23 Sep 2008 02:39:07 -0600 Message-ID: <48D8568F.2060206@us.ibm.com> Date: Mon, 22 Sep 2008 21:38:07 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1222125454-21744-1-git-send-email-ryanh@us.ibm.com> <1222125454-21744-2-git-send-email-ryanh@us.ibm.com> In-Reply-To: <1222125454-21744-2-git-send-email-ryanh@us.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 1/3] Only call aio flush handler if set Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ryan Harper Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org Ryan Harper wrote: > If the aio handler doesn't register an io_flush handler, we'd SEGV; fix that by > only calling the flush handler if set. BTW, aio handlers *should* register an > io_flush routine. > > Signed-off-by: Ryan Harper > > diff --git a/aio.c b/aio.c > index 687e4be..2bb3ed4 100644 > --- a/aio.c > +++ b/aio.c > @@ -105,7 +105,8 @@ void qemu_aio_flush(void) > ret = 0; > > LIST_FOREACH(node, &aio_handlers, node) { > - ret |= node->io_flush(node->opaque); > + if (node->io_flush) > + ret |= node->io_flush(node->opaque); > } > Just not doing an io_flush is just hiding the real bug--that the user didn't register an io_flush handler. If the inevitable SEGV is not your thing, I'd rather see a check added to qemu_aio_set_fd_handler() that threw an error and exited if called without an io_flush handler. Regards, Anthony Liguori > qemu_aio_wait(); >