Hide Forgot
Description of problem: System crashed when mirroring to itself Version-Release number of selected component (if applicable): kernel-2.6.32-620.el6.x86_64 qemu-kvm-rhev-0.12.1.2-2.489.el6.x86_64 How reproducible: 3/3 Steps to Reproduce: 1.Boot vm through following cli: /usr/libexec/qemu-kvm \ -name rhel6.6.0 \ -machine rhel6.6.0,accel=kvm \ -realtime mlock=off \ -cpu SandyBridge \ -m 4G \ -smp 4,cores=1,threads=1,sockets=4 \ -uuid 49a3438a-70a3-4ba8-92ce-3a05e0934608 \ -nodefaults \ -rtc base=utc,driftfix=slew \ -monitor unix:/tmp/monitor-unix,server,nowait \ -serial unix:/tmp/serial0,server,nowait \ -global kvm-pit.lost_tick_policy=discard \ -global PIIX4_PM.disable_s3=1 \ -global PIIX4_PM.disable_s4=1 \ -boot order=c,menu=on,strict=on \ -device virtio-scsi-pci,id=scsi \ -drive file=/home/0223/rhel68bk2.qcow2,if=none,format=qcow2,id=drive-virtio-scsi,werror=stop,rerror=stop \ -device scsi-hd,drive=drive-virtio-scsi,id=virtio-scsi,bus=scsi.0,scsi-id=0 \ -netdev tap,id=hostnet0,vhost=on \ -device virtio-net-pci,netdev=hostnet0,id=net0,vectors=0,mac=00:1a:4a:42:0a:00 \ -monitor stdio \ -qmp tcp:0:4466,server,nowait -serial unix:/tmp/ttym,server,nowait \ -vga qxl \ -spice port=5910,password=redhat-vga,disable-ticketing \ -k en-us \ 2. In qmp, mirroring the base to itself { "execute": "drive-mirror", "arguments": { "device": "drive-virtio-disk0", "target": "/home/rhelbk2.img","sync": "full"}} { "execute": "__com.redhat_drive-reopen", "arguments": {"device": "drive-virtio-scsi", "new-image-file": "/home/rhelbk2.img" } 3.restart the guest or restart the guest before "drive-reopen" Actual results: System crashed and the guest didn't boot up Expected results: system boot up correctly Additional info:
Is the report correct? ... -drive file=/home/0223/rhel68bk2.qcow2,if=none,format=qcow2,id=drive-virtio-scsi,werror=stop,rerror=stop \ ... { "execute": "drive-mirror", "arguments": { "device": "drive-virtio-disk0", "target": "/home/rhelbk2.img","sync": "full"}} { "execute": "__com.redhat_drive-reopen", "arguments": {"device": "drive-virtio-scsi", "new-image-file": "/home/rhelbk2.img" } You create a drive of id=drive-virtio-scsi, but then reference a drive named "drive-virtio-disk0" with drive-mirror. Did you mean to write "drive-virtio-scsi" here?
(In reply to John Snow from comment #3) > Is the report correct? > > ... > -drive > file=/home/0223/rhel68bk2.qcow2,if=none,format=qcow2,id=drive-virtio-scsi, > werror=stop,rerror=stop \ > ... > > { "execute": "drive-mirror", "arguments": { "device": "drive-virtio-disk0", > "target": "/home/rhelbk2.img","sync": "full"}} > { "execute": "__com.redhat_drive-reopen", "arguments": {"device": > "drive-virtio-scsi", "new-image-file": "/home/rhelbk2.img" } > > > You create a drive of id=drive-virtio-scsi, but then reference a drive named > "drive-virtio-disk0" with drive-mirror. > > Did you mean to write "drive-virtio-scsi" here? Sorry for the mistake, yes, I mean write to "drive-virtio-scsi" Thanks Jing
Actually, I think this is not valid. Why would you mirror a drive to itself? This to me is like the famous "cat file > file" problem. You may expect this does nothing, but in fact it erases the file. It looks like the same problem is happening here, and I think the real solution is "well, don't do that." If I am mistaken and there is some genuine use case for trying to overwrite a file that is open with data from that open file... well, let me know about that.