Hi Pierre, I can reproduce the bug with a 2 GB VDI image with a single FAT32-formatted partition (on git master):
# cp src.vdi test.vdi # ./qemu-nbd -c /dev/nbd0 test.vdi # dd if=/dev/urandom of=/dev/nbd0 bs=1M count=64 64+0 records in 64+0 records out 67108864 bytes (67 MB) copied, 3.34091 s, 20.1 MB/s # md5sum /dev/nbd0 bfa6726d0d8fe752c0c7dccbf770fae6 /dev/nbd0 # sync # echo 1 > /proc/sys/vm/drop_caches # md5sum /dev/nbd0 cb4762769e09ed6da5e327710bfb3996 /dev/nbd0 # ./qemu-nbd -d /dev/nbd0 /dev/nbd0 disconnected Using qcow2 or not using NBD I cannot reproduce the issue. Using a qcow2 image and converting it to VDI, the issue appears again. Using an empty VDI image, or one filled with random data, the issue does not appear either. I have attached a qcow2 image for others to test: # ./qemu-img convert -O vdi src.qcow2 test.vdi; ./qemu-nbd -c /dev/nbd0 test.vdi; dd if=/dev/urandom of=/dev/nbd0 bs=1M count=64; md5sum /dev/nbd0; sync; echo 1 > /proc/sys/vm/drop_caches; md5sum /dev/nbd0; ./qemu-nbd -d /dev/nbd0 64+0 records in 64+0 records out 67108864 bytes (67 MB) copied, 3.33071 s, 20.1 MB/s 9f683b4a58cecdd8da04ec2f1b7abc4a /dev/nbd0 efb1cdd5ebe1dd326056eb2f2e500944 /dev/nbd0 /dev/nbd0 disconnected Unfortunately, I do not yet know the cause of this issue. Max -- 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: New Bug description: 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=63 # 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 the 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