Bug 971297 - block: Mirroring to raw block device doesn't zero out unused blocks
block: Mirroring to raw block device doesn't zero out unused blocks
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm (Show other bugs)
Unspecified Unspecified
unspecified Severity unspecified
: rc
: ---
Assigned To: Jeff Cody
Virtualization Bugs
Depends On:
Blocks: 971312 1136382
  Show dependency treegraph
Reported: 2013-06-06 04:45 EDT by Kevin Wolf
Modified: 2015-07-29 16:27 EDT (History)
7 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 971312 1136382 (view as bug list)
Last Closed: 2015-07-29 16:27:19 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Kevin Wolf 2013-06-06 04:45:01 EDT
Just like qemu-img convert uses bdrv_has_zero_init() in order to check whether
it can assume that not explicitly written clusters are zeroed, mirroring needs
to do the same. Otherwise mirroring to a raw block device with uninitialised
data doesn't yield the correct result.

Manual test case:
$ qemu-img create -f qcow2 /tmp/test.qcow2 64M
$ dd if=/dev/urandom of=/tmp/test.raw bs=1M count=64
$ sudo losetup /dev/loop0 /tmp/test.raw
$ sudo chmod 666 /dev/loop0
$ x86_64-softmmu/qemu-system-x86_64 -hda /tmp/test.qcow2 -monitor stdio
(qemu) drive_mirror ide0-hd0 /dev/loop0 raw
Formatting '/dev/loop0', fmt=raw size=67108864 
(qemu) block_job_complete ide0-hd0
(qemu) quit
$ sudo hexdump -n 512 /dev/loop0

Expected result:
Only zero bytes are on the block device

Actual result:
The random bytes are still there
Comment 2 juzhang 2013-06-06 05:05:41 EDT
Can reproduce by using qemu-kvm-1.5.0-2.

Before do mirror
#hexdump -n 512 /root/zhangjunyi/test.raw 
0000000 2847 67ae c62e b392 554f e6d8 95aa e80a
0000010 a68e c5f3 33d0 b844 6464 a216 7625 1640
0000020 20f2 1045 66e9 cf58 74c6 038d f0c1 cd31

After mirror
#hexdump -n 512 /root/zhangjunyi/test.raw 
0000000 0000 0000 0000 0000 0000 0000 0000 0000

Note You need to log in before you can comment on or make changes to this bug.