Author: eelco
Date: Sat Feb 25 17:34:21 2012
New Revision: 32560
URL: https://nixos.org/websvn/nix/?rev=32560&sc=1

Log:
* Backport a fix to qemu-kvm to prevent "qemu-img convert" from
  creating corrupt VirtualBox images.
  (https://bugs.launchpad.net/qemu/+bug/919242)

Added:
   nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/qemu-img-fix-corrupt-vdi.patch
Modified:
   nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/default.nix

Modified: nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/default.nix   Sat Feb 25 
17:33:14 2012        (r32559)
+++ nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/default.nix   Sat Feb 25 
17:34:21 2012        (r32560)
@@ -11,7 +11,7 @@
     sha256 = "0gkk96yid3nq8i4z8xbiarj0r9v7b2zavf5mnh0rc7kclzxa7mmf";
   };
 
-  patches = [ ./smb-tmpdir.patch ];
+  patches = [ ./smb-tmpdir.patch ./qemu-img-fix-corrupt-vdi.patch ];
 
   configureFlags = "--audio-drv-list=alsa";
 

Added: 
nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/qemu-img-fix-corrupt-vdi.patch
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
nixpkgs/trunk/pkgs/os-specific/linux/qemu-kvm/qemu-img-fix-corrupt-vdi.patch    
    Sat Feb 25 17:34:21 2012        (r32560)
@@ -0,0 +1,27 @@
+From http://patchwork.ozlabs.org/patch/137186/
+
+diff -ru qemu-kvm-0.15.1-orig/block/vdi.c qemu-kvm-0.15.1/block/vdi.c
+--- qemu-kvm-0.15.1-orig/block/vdi.c   2011-10-19 15:54:48.000000000 +0200
++++ qemu-kvm-0.15.1/block/vdi.c        2012-02-25 18:15:36.114574574 +0100
+@@ -1,7 +1,7 @@
+ /*
+  * Block driver for the Virtual Disk Image (VDI) format
+  *
+- * Copyright (c) 2009 Stefan Weil
++ * Copyright (c) 2009, 2012 Stefan Weil
+  *
+  * This program is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+@@ -767,8 +767,12 @@
+             acb->header_modified = 1;
+         }
+         acb->bmap_last = block_index;
++        /* Copy data to be written to new block and zero unused parts. */
++        memset(block, 0, sector_in_block * SECTOR_SIZE);
+         memcpy(block + sector_in_block * SECTOR_SIZE,
+                acb->buf, n_sectors * SECTOR_SIZE);
++        memset(block + (sector_in_block + n_sectors) * SECTOR_SIZE, 0,
++               (s->block_sectors - n_sectors - sector_in_block) * 
SECTOR_SIZE);
+         acb->hd_iov.iov_base = (void *)block;
+         acb->hd_iov.iov_len = s->block_size;
+         qemu_iovec_init_external(&acb->hd_qiov, &acb->hd_iov, 1);
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to