blob: e64defbda14de4dce45ab29c6761e78e4d442d15 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
detect-zeroes=unmap fails to discard in some cases
Under certain circumstances, QEMU 2.1.2 fails to discard the underlaying block. The command to start QEMU is:
qemu-system-x86_64 -machine pc,accel=kvm -m 2G -smp 2 -vga std -usb -usbdevice tablet -drive if=none,id=ff,aio=native,discard=unmap,detect-zeroes=unmap,file=/tmp/test.qcow2 -device virtio-scsi-pci -device scsi-disk,drive=ff -cdrom /media/iso/archlinux-2014.06.01-dual.iso -vnc :1
Steps to reproduce:
0. qemu-img create -f qcow2 /tmp/test.qcow2 4G
1. Boot in the guest (Arch Linux x86_64 with Linux 3.14.4)
2. cat /dev/zero > /dev/sda. Observe a file of 4109M (size measured with `du -m`
3. cat /dev/zero > /dev/sda
4. blkdiscard /dev/sda
5. Observe that test.qcow2 grows larger than 1M (13M in my testing).
The results are more severe when you write other kind of data in step 2, for instance `base64 /dev/zero > /dev/sda` and then continuing with step 3 and 4 will result in a file of 3642M, after blkdiscard.
It makes not much of a difference if I create an ext4 filesystem on top of it and use fstrim (or rm).
|