From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JyaRI-0006Ur-9O for qemu-devel@nongnu.org; Tue, 20 May 2008 18:36:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JyaRD-0006TB-F6 for qemu-devel@nongnu.org; Tue, 20 May 2008 18:36:11 -0400 Received: from [199.232.76.173] (port=38223 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JyaRD-0006Sw-7k for qemu-devel@nongnu.org; Tue, 20 May 2008 18:36:07 -0400 Received: from mail2.shareable.org ([80.68.89.115]:38212) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JyaRD-0008WI-8O for qemu-devel@nongnu.org; Tue, 20 May 2008 18:36:07 -0400 Date: Tue, 20 May 2008 23:36:02 +0100 From: Jamie Lokier Subject: Re: [Qemu-devel] Re: [PATCH][v2] Align file accesses with cache=off (O_DIRECT) Message-ID: <20080520223602.GE27853@shareable.org> References: <1211283126.4314.70.camel@frecb07144> <48332AB9.3010707@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <48332AB9.3010707@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 Cc: Blue Swirl , Laurent Vivier , Kevin Wolf Anthony Liguori wrote: > >This patch implements wrappers for raw_pread and raw_pwrite which align > >all file accesses and make qcow(2) work with cache=off. This method > >might not be the most performant one (compared to fixing qcow, qcow2 and > >everything else that might be using unaligned accesses), but unaligned > >accesses don't happen that frequently and with this patch really all > >image accesses should be covered." It's a useful patch. One little esoteric consequence you might want to document. This occurs when a guest is running something like a database or journalling filesystem, and is reliant on the host disk's integrity properties. One property of disks is that if you overwrite a sector and the're power loss, when read later that sector might be corrupt. Even if the new data is the same as the old data with only some bytes changed, some of the _unchanged_ bytes may be corrupt by this. When it writes to sector-aligned offset, there is a possibility that the guest is depending on power failure not causing corruption of neighouring sectors. This is typical with some kinds of journalling. 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. -- Jamie