Bug 983819 - drive-mirroring: offset decreased after after "offset" eq "len"
drive-mirroring: offset decreased after after "offset" eq "len"
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm (Show other bugs)
Unspecified Unspecified
medium Severity medium
: rc
: ---
Assigned To: Paolo Bonzini
Virtualization Bugs
Depends On:
  Show dependency treegraph
Reported: 2013-07-11 22:46 EDT by xu
Modified: 2013-12-13 08:45 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2013-12-13 08:45:19 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
qmp commands log (67.34 KB, text/plain)
2013-07-11 22:48 EDT, xu
no flags Details

  None (edit)
Description xu 2013-07-11 22:46:04 EDT
Description of problem:

drive mirroring offset decreased after copy offset equal image length when do io stress in guest:

more details please refer to qmp monitor in attachment; 

Version-Release number of selected component (if applicable):


How reproducible:
about 1/4

Steps to Reproduce:

1. boot a win7 guest with qcow3 image
cmd line:
qemu-kvm \
    -S \
    -name 'virt-tests-vm1' \
    -nodefaults \
    -chardev socket,id=qmp_id_qmpmonitor1,path=/tmp/monitor-qmpmonitor1-20130711-200813-XAXV6XoS,server,nowait \
    -mon chardev=qmp_id_qmpmonitor1,mode=control \
    -chardev socket,id=serial_id_serial1,path=/tmp/serial-serial1-20130711-200813-XAXV6XoS,server,nowait \
    -device isa-serial,chardev=serial_id_serial1 \
    -chardev socket,id=seabioslog_id_20130711-200813-XAXV6XoS,path=/tmp/seabios-20130711-200813-XAXV6XoS,server,nowait \
    -device isa-debugcon,chardev=seabioslog_id_20130711-200813-XAXV6XoS,iobase=0x402 \
    -device ich9-usb-uhci1,id=usb1,bus=pci.0,addr=0x4 \
    -drive file='/root/autotest-devel/client/tests/virt/shared/data/images/win7-64-virtio.qcow2',if=none,id=drive-virtio-disk1,media=disk,cache=none,snapshot=off,format=qcow2,aio=native \
    -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,bootindex=0 \
    -device virtio-net-pci,netdev=id3QT2rt,mac='9a:69:6a:6b:6c:6d',bus=pci.0,addr=0x3,id='idFtI5cJ' \
    -netdev tap,id=id3QT2rt,vhost=on,fd=24 \
    -m 4096 \
    -smp 4,maxcpus=4,cores=2,threads=1,sockets=2 \
    -cpu 'SandyBridge',,hv_relaxed \
    -M pc \
    -drive file='/root/autotest-devel/client/tests/virt/shared/data/isos/windows/winutils.iso',if=none,id=drive-ide0-0-0,media=cdrom,format=raw \
    -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0 \
    -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
    -vnc :0 \
    -vga std \
    -rtc base=localtime,clock=host,driftfix=slew  \
    -boot order=cdn,once=c,menu=off  \

2. load stress in guest
"heavyload /CPU /MEMORY /START"(heavyload is a stress tool for windows)

3. mirror block device to new qcow2 images
qmp cmd:
{"execute": "drive-mirror", "arguments": {"device": "drive-virtio-disk1", "mode": "absolute-paths", "format": "qcow2", "target": "/root/autotest-devel/client/tests/virt/shared/data/images/target1.qcow2", "sync": "full"}, "id": "vUdvHsnl"}
4. monitor block jobs info:
qmp cmd:
{"execute": "query-block-jobs", "id": "fyWemTXl"}

Actual results:

offset decrease after offset equal image length

Expected results:

offset not decrease after offset equal image length

Additional info:
Comment 2 xu 2013-07-11 22:48:36 EDT
Created attachment 772525 [details]
qmp commands log

Post qmp commands and ouput log here, hope it helpful to analyses this defeat;
Comment 3 Paolo Bonzini 2013-12-13 08:45:19 EST
This is not a bug.  It's just a corner case.

The offset is guaranteed not to decrease only after the BLOCK_JOB_READY event is emitted.  Here the offset was = length but the event had not been emitted yet.

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