From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40144) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZUIi-0002Um-KP for qemu-devel@nongnu.org; Tue, 08 Sep 2015 21:35:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZZUIe-0007nc-W9 for qemu-devel@nongnu.org; Tue, 08 Sep 2015 21:35:52 -0400 Received: from indium.canonical.com ([91.189.90.7]:33701) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZUIe-0007n1-QF for qemu-devel@nongnu.org; Tue, 08 Sep 2015 21:35:48 -0400 Received: from loganberry.canonical.com ([91.189.90.37]) by indium.canonical.com with esmtp (Exim 4.76 #1 (Debian)) id 1ZZUId-0004GF-Ro for ; Wed, 09 Sep 2015 01:35:47 +0000 Received: from loganberry.canonical.com (localhost [127.0.0.1]) by loganberry.canonical.com (Postfix) with ESMTP id C38762E80D4 for ; Wed, 9 Sep 2015 01:35:47 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Date: Wed, 09 Sep 2015 01:28:13 -0000 From: Launchpad Bug Tracker <1422307@bugs.launchpad.net> Sender: bounces@canonical.com References: <20150216100528.10277.20713.malonedeb@chaenomeles.canonical.com> Message-Id: <20150909012817.32284.39720.malone@ackee.canonical.com> Errors-To: bounces@canonical.com Subject: [Qemu-devel] [Bug 1422307] Re: qemu-nbd corrupts files Reply-To: Bug 1422307 <1422307@bugs.launchpad.net> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This bug was fixed in the package qemu - 2.0.0+dfsg-2ubuntu1.18 --------------- qemu (2.0.0+dfsg-2ubuntu1.18) trusty-proposed; urgency=3Dmedium * qemu-nbd-fix-vdi-corruption.patch: qemu-nbd: fix corruption while writing VDI volumes (LP: #1422307) -- Pierre Schweitzer Mon, 17 Aug 2015 11:43:39 +0200 ** Changed in: qemu (Ubuntu Trusty) Status: Fix Committed =3D> Fix Released -- = You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1422307 Title: qemu-nbd corrupts files Status in QEMU: Fix Released Status in qemu package in Ubuntu: Fix Released Status in qemu source package in Trusty: Fix Released Bug description: [Impact] A race condition in the VDI block driver of Qemu leads to image (and thus= file system) corruption under certain circumstances. This makes Qemu tools usage for VDI formatted images particularly dangero= us (qemu-img, qemu-nbd). The bug fix introduces locks to prevent such race condition. = [Test Case] A simple test case was provided in comment #5 (https://bugs.launchpad.net= /ubuntu/+source/qemu/+bug/1422307/comments/5): $ ./qemu-img create -f vdi test.vdi 2G Formatting 'test.vdi', fmt=3Dvdi size=3D2147483648 static=3Doff $ ./qemu-img create -f raw test.raw 2G Formatting 'test.raw', fmt=3Draw size=3D2147483648 $ x86_64-softmmu/qemu-system-x86_64 -enable-kvm -drive if=3Dvirtio,file= =3Dblkverify:test.raw:test.vdi,format=3Draw -drive if=3Dvirtio,file=3Ddata.= img,format=3Draw,format=3Draw -cdrom ~/tmp/arch.iso -m 512 -boot d blkverify: read sector_num=3D810976 nb_sectors=3D256 contents mismatch in= sector 811008 Operations in the guest: $ dd if=3D/dev/vdb of=3D/dev/vda $ dd if=3D/dev/vda of=3D/dev/null [Regression Potential] In case of bugs affecting the way locks are used, deadlocks could be a re= gression, but they would only affect VDI images. = Original bug report: Dear all, On Trusty, in certain situations, try to copy files over a qemu-nbd mounted file system leads to write errors (and thus, file corruption). Here is the last example I tried: -> virtual disk is a VDI disk -> It has only one partition, in FAT Here is my mount process: # modprobe nbd max_part=3D63 # qemu-nbd -c /dev/nbd0 "virtual_disk.vdi" # partprobe /dev/nbd0 # mount /dev/nbd0p1 /tmp/mnt/ Partition is properly mounted at that point: /dev/nbd0p1 on /tmp/mnt type vfat (rw) Now, when I copy a file (rather big, ~28MB): # cp file_to_copy /tmp/mnt/ ; sync # md5sum /tmp/mnt/file_to_copy 2efc9f32e4267782b11d63d2f128a363 /tmp/mnt/file_to_copy # umount /tmp/mnt # mount /dev/nbd0p1 /tmp/mnt/ # md5sum /tmp/mnt/file_to_copy 42b0a3bf73f704d03ce301716d7654de /tmp/mnt/file_to_copy The first hash was obviously the right one. On a previous attempt I did, I spotted thanks to vbindiff that parts of t= he file were just filed with 0s instead of actual data. It will randomly work after several attempts to write. Version information: # qemu-nbd --version qemu-nbd version 0.0.1 Written by Anthony Liguori. Cheers, To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1422307/+subscriptions