From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50139 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ontim-0006P4-WD for qemu-devel@nongnu.org; Tue, 24 Aug 2010 09:39:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Ontim-0002ND-0Y for qemu-devel@nongnu.org; Tue, 24 Aug 2010 09:39:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53827) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Ontil-0002N6-Ov for qemu-devel@nongnu.org; Tue, 24 Aug 2010 09:39:23 -0400 Message-ID: <4C73CB85.9010306@redhat.com> Date: Tue, 24 Aug 2010 16:39:17 +0300 From: Avi Kivity MIME-Version: 1.0 References: <1282646430-5777-1-git-send-email-kwolf@redhat.com> <4C73C2BF.8050300@codemonkey.ws> <4C73C622.7080808@redhat.com> <4C73C926.3010901@codemonkey.ws> <4C73C9CF.7090800@redhat.com> <4C73CAA9.2060104@codemonkey.ws> In-Reply-To: <4C73CAA9.2060104@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [RFC][STABLE 0.13] Revert "qcow2: Use bdrv_(p)write_sync for metadata writes" List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Kevin Wolf , stefanha@gmail.com, mjt@tls.msk.ru, qemu-devel@nongnu.org, hch@lst.de On 08/24/2010 04:35 PM, Anthony Liguori wrote: >> It's about metadata writes. If an operation changes metadata, we >> must sync it to disk before writing any data or other metadata which >> depends on it, regardless of any promises to the guest. > > > Why? If the metadata isn't sync, we loose the write. > > But that can happen anyway because we're not sync'ing the data > > We need to sync the metadata in the event of a guest initiated flush, > but we shouldn't need to for a normal write. 1. Allocate a cluster (increase refcount table) 2. Link cluster to L2 table 3. Second operation makes it to disk; first still in pagecache 4. Crash 5. Dangling pointer from L2 to freed cluster -- error compiling committee.c: too many arguments to function