From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Wolf Subject: Re: [BUG] Qcow2 corruption on snapshot revert Date: Thu, 04 Aug 2011 16:57:24 +0200 Message-ID: <4E3AB354.4080903@redhat.com> References: <201108041620.13687.hahn@univention.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, Stefan Gohmann To: Philipp Hahn Return-path: Received: from mx1.redhat.com ([209.132.183.28]:7893 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751510Ab1HDOye (ORCPT ); Thu, 4 Aug 2011 10:54:34 -0400 In-Reply-To: <201108041620.13687.hahn@univention.de> Sender: kvm-owner@vger.kernel.org List-ID: Am 04.08.2011 16:20, schrieb Philipp Hahn: > Hello, > > it seems like I have discovered a bug in qemu-0.14.1 which corrupts Qcow2 > image files when using internal snapshots. > I tied this both on an amd64 host running our Debian bases UCS distribution > (using pure qemu-kvm_0.14 and pure qemu-kvm_0.14.1) and also on a pure Debian > i386 sid installation (patched qemu-kvm_0.14.1). > I can reproducte this every time doing the following steps: > 0. Create and install VM > 1. Shut down VM > 2. Create offline snapshot using "qemu-img snapshot -c Off image.qcow2" > 3. Start VM > 4. Create online snapshot using "savevm On" > 5. Shut down VM > 6. Revert to snapshot using "qemu-img snapshot -a Off image.qcow2" > Repeat step 6 three or more times and the Image is destroyed. > > My guess is that this is a but in qemu-img, which is related to having an > online snapshot (VM running) while reverting to an offline snapshot (VM > stopped), because I wasn't able to reproduce this using only offline > snapshots or only online snapshots. > > I have attached a shell script to reproduce this bug on all my runs. > * It both happens with kvm-0.14.1 and also with qemu-0.14.1. > * The cache stragtegy "writethrough" vs. "writeback" is irrelevant. > > The script needs an image nameded "pmh_squeeze-0.qcow.bak2" of an VM where you > can login via serial console using "root" for login and "univention" for > password. You can use other images as well, as long as you modify the block > device from within the VM. You get get it from > > > There you will also find the beginning of a small Python program > called "qcow2.py" which can be used to dump the structure of an qcow2 file in > some more human readable format with some consistency checking. > > Related links: > > > > > > Any help is appreciated. Thanks for the report. This small script seems to be enough to reproduce the corruption: qemu-img create -f qcow2 /tmp/sn.qcow2 64M qemu-img snapshot -c foo /tmp/sn.qcow2 qemu-io -c 'write -b 0 4M' /tmp/sn.qcow2 qemu-img snapshot -a foo /tmp/sn.qcow2 I'll look into the details tomorrow. Kevin