From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Jycm0-000466-Aj for qemu-devel@nongnu.org; Tue, 20 May 2008 21:05:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Jycly-00045U-FV for qemu-devel@nongnu.org; Tue, 20 May 2008 21:05:43 -0400 Received: from [199.232.76.173] (port=43363 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jycly-00045K-BB for qemu-devel@nongnu.org; Tue, 20 May 2008 21:05:42 -0400 Received: from mail.codesourcery.com ([65.74.133.4]:38808) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Jyclx-00077x-Np for qemu-devel@nongnu.org; Tue, 20 May 2008 21:05:42 -0400 From: Paul Brook Subject: Re: [Qemu-devel] Re: [PATCH][v2] Align file accesses with cache=off (O_DIRECT) Date: Wed, 21 May 2008 02:05:36 +0100 References: <1211283126.4314.70.camel@frecb07144> <200805202352.17807.paul@codesourcery.com> <483373BA.6090108@codemonkey.ws> In-Reply-To: <483373BA.6090108@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset="ansi_x3.4-1968" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200805210205.37432.paul@codesourcery.com> 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 Cc: Blue Swirl , Laurent Vivier , Kevin Wolf On Wednesday 21 May 2008, Anthony Liguori wrote: > Paul Brook wrote: > >> When sector-aligned guest offsets are converted to sector-unaligned > >> writes (e.g. due to qcow2 etc.), that property is no longer satisfied, > >> and power failure of the host disk can cause more damage than the > >> guest is designed to be resistant to. > > > > Seems like the easiest solution would be to have qcow always align its > > writes. We don't do on the fly compression, so it should be fairly easy > > to make this happen with minimal overhead. > > That's not sufficient. O_DIRECT imposes not only offset alignment > requirements but also requirements on the buffer being read to. Most of > the code in QEMU does not properly align the read/write buffers. In that case you need both. For correct operation the qcow layer needs to ensure that all file offsets are block aligned (amongst other things, I wouldn't be surprised if there are more subtle problems with metadata updates). The memory buffer alignment can occur wherever is most convenient, that's trivially atomic w.r.t. unexpected interruptions. Paul