Bug 989621

Summary: VSS support for qemu-ga-win
Product: Red Hat Enterprise Linux 7 Reporter: Hai Huang <hhuang>
Component: qemu-kvmAssignee: Gal Hammer <ghammer>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 7.0CC: acathrow, areis, bsarathy, eblake, jcody, juzhang, kwolf, lersek, lnovich, michen, mkenneth, qzhang, rhod, scohen, sluo, tsekiyam, virt-maint
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Release Note
Doc Text:
RELEASE NOTES NOT NEEDED: this is present in RHEL6.5 When performing online backups, applications are not aware of guest-agent freeze/thaw commands and therefore the filesystem may be in an inconsistent state due to pending disk flushes. On Windows, the correct way to handle freeze/thaw is using the VSS API.
Story Points: ---
Clone Of: 948017
: 1034899 (view as bug list) Environment:
Last Closed: 2014-06-13 09:29:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 948017    
Bug Blocks: 975927, 1034899    

Comment 2 Ronen Hod 2013-11-26 16:57:32 UTC
ON_QA, since we shipped the RHEL6.5 GA with VSS in RHEL7 Beta
Opened a clone: Bug 1034899 - VSS support for qemu-ga-win - Sync with upstream

Comment 3 Sibiao Luo 2014-01-06 05:31:21 UTC
Verify this bug with win2012-64 guests with the following version:

Host info:
# uname -r && rpm -q qemu-kvm
3.10.0-64.el7.x86_64
qemu-kvm-1.5.3-30.el7.x86_6
Guest info :
virtio-win-prewhql-0.1-74 (for virtio-serial driver)
qemu-ga-win-6.5-5-x64.msi (guest agent)

Steps:

1. Boot up a guest:

 /usr/libexec/qemu-kvm -cpu SandyBridge -M pc -enable-kvm -m 2G -smp 2,sockets=2,cores=1,threads=1 -name rhel6.4-64 -uuid 9a0e67ec-f286-d8e7-0548-0c1c9ec93009 -nodefconfig -nodefaults -monitor stdio -rtc base=utc,clock=host,driftfix=slew -no-kvm-pit-reinjection -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 -chardev socket,path=/tmp/qga.sock,server,nowait,id=qga0 -device virtserialport,bus=virtio-serial0.0,chardev=qga0,name=org.qemu.guest_agent.0 -drive file=/home/win2012-64-virtio.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,id=hostnet0,vhost=on -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:d5:51:8a,bus=pci.0,addr=0x3 -device usb-tablet,id=input0 -vnc :10 -vga std -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -qmp tcp:0:5555,server,nowait -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0

2. Install virtio-serial driver, qemu-ga-win msi, python2.6 64bit inside guest.

3. Send some commands via guest agent. 
(On host)

# nc -U /tmp/qga.sock 

{"execute":"guest-ping"}
{"return": {}}

4. Run the following script inside guest:
# cat test.py 
import time

result = open("C:\\time.txt", "w")

while 1:
    result.write("%s\n\r" % time.ctime())
    result.flush()
    time.sleep(1)

C:\> test.py (run inside guest)

4. Freeze guest:

(1) Freeze 2~3s (<10s) and then thaw it with guest agent command.

{"execute":"guest-fsfreeze-freeze"}
{"return": 1}
{"execute":"guest-fsfreeze-thaw"}
{"return": 1}

Check "C:\time.txt" file inside guest:

Mon Jan 06 05:01:12 2014
Mon Jan 06 05:01:13 2014
Mon Jan 06 05:01:14 2014
Mon Jan 06 05:01:15 2014
Mon Jan 06 05:01:16 2014
Mon Jan 06 05:01:17 2014
Mon Jan 06 05:01:18 2014
Mon Jan 06 05:01:19 2014 <--- The time is not continuous from here
Mon Jan 06 05:01:24 2014
Mon Jan 06 05:01:25 2014
Mon Jan 06 05:01:26 2014
Mon Jan 06 05:01:27 2014
Mon Jan 06 05:01:28 2014
Mon Jan 06 05:01:29 2014
Mon Jan 06 05:01:30 2014

(2) Freeze for 1 min and then thaw it. (The guest auto-releases the freeze after 10s)

{"execute":"guest-fsfreeze-freeze"}
{"return": 1}
{"execute":"guest-fsfreeze-thaw"}
{"error": {"desc": "couldn't hold writes: fsfreeze is limited up to 10 seconds:  (error: 80042314)"}}
{"execute":"guest-fsfreeze-thaw"}
{"return": 0}

Mon Jan 06 05:01:30 2014
Mon Jan 06 05:01:31 2014
Mon Jan 06 05:01:32 2014
Mon Jan 06 05:01:33 2014
Mon Jan 06 05:01:34 2014
Mon Jan 06 05:01:35 2014
Mon Jan 06 05:01:36 2014
Mon Jan 06 05:01:37 2014 <--- The time is not continuous from here 
Mon Jan 06 05:01:48 2014
Mon Jan 06 05:01:49 2014
Mon Jan 06 05:01:50 2014
Mon Jan 06 05:01:51 2014
Mon Jan 06 05:01:52 2014
Mon Jan 06 05:01:53 2014
Mon Jan 06 05:01:54 2014
Mon Jan 06 05:01:55 2014
Mon Jan 06 05:01:56 2014

Base on above testing, this issue has been fixed correctly, move to VERIFIED status, please correctly me if any mistake.

Best Regards,
sluo

Comment 6 Ludek Smid 2014-06-13 09:29:14 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.