From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MvuHz-0008Az-J4 for qemu-devel@nongnu.org; Thu, 08 Oct 2009 10:48:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MvuHt-00087S-WC for qemu-devel@nongnu.org; Thu, 08 Oct 2009 10:48:18 -0400 Received: from [199.232.76.173] (port=35798 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MvuHt-00087F-Qb for qemu-devel@nongnu.org; Thu, 08 Oct 2009 10:48:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:18589) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MvuHs-0003gn-GG for qemu-devel@nongnu.org; Thu, 08 Oct 2009 10:48:13 -0400 Message-ID: <4ACDFB64.1040106@redhat.com> Date: Thu, 08 Oct 2009 16:47:00 +0200 From: Kevin Wolf MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] qcow2: Bring synchronous read/write back to life References: <1255006928-7600-1-git-send-email-kwolf@redhat.com> <4ACDF797.4010805@codemonkey.ws> In-Reply-To: <4ACDF797.4010805@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org Am 08.10.2009 16:30, schrieb Anthony Liguori: > Kevin Wolf wrote: >> When the synchronous read and write functions were dropped, they were replaced >> by generic emulation functions. Unfortunately, these emulation functions don't >> provide the same semantics as the original functions did. >> >> The original bdrv_read would mean that we read some data synchronously and that >> we won't be interrupted during this read. The latter assumption is no longer >> true with the emulation function which needs to use qemu_aio_poll and therefore >> allows the callback of any other concurrent AIO request to be run during the >> read. > > Perhaps you could create a mechanism to freeze the qcow2 image by > queuing all completions within qcow2 until the image was unfrozen. This > would have the same effect switching to synchronous read/write. > > You may also have to queue new read/write requests... > > Introducing sync read/write seems like a major step backwards to me. Right, I was expecting your reaction. ;-) I do even agree that it's not nice to have the synchronous functions back. But removing them caused a regression, so the removal should be reverted until it is done right. I just want to make clear that we're talking about data corruption here. This is not just something that we can care about when we are bored some time in the future. For stable, I think taking this patch is the only reasonable thing to do. Any other solution would be way too invasive. For master we can discuss other solutions. However, I really don't feel like hacking around it with a quick fix and breaking other stuff, so this takes a bit more time. For the meantime I would prefer committing this to master, too. By the way, I don't think queuing things in qcow2 is the right thing to do. It probably wouldn't even help if, say, VMDK implemented AIO and I used a VMDK image as a backing file for qcow2. The real solution is to fix the generic bdrv_read/write emulation. Now we just need to find the best way to do this. Kevin