Bug 1438735

Summary: Windows' qemu-ga fails to set the 'can-offline' field in 'guest-get-vcpus' reply
Product: Red Hat Enterprise Linux 7 Reporter: Daniel Berrangé <berrange>
Component: virtio-winAssignee: Yvugenfi <yvugenfi>
virtio-win sub component: qemu-ga-win QA Contact: Virtualization Bugs <virt-bugs>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: unspecified CC: chayang, juzhang, knoel, wyu, xfu, xiagao, yvugenfi
Version: 7.4   
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Windows   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-08-01 12:58:08 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:

Description Daniel Berrangé 2017-04-04 10:20:24 UTC
Description of problem:
The QGA schema says

# @can-offline: Whether offlining the VCPU is possible. This member
#               is always filled in by the guest agent when the structure is
#               returned, and always ignored on input (hence it can be omitted
#               then).

but the *Windows* implementation of 'guest-get-vcpus' simply does

             vcpu->has_can_offline = false;

which means 'can-offline' is missing entirely from the reply. This causes errors in libvirt which is expecting the reply to be compliant with the schema docs

error: internal error: 'can-offline' missing in reply of guest-get-vcpus

The guest agent code should be doing

             vcpu->has_can_offline = true;
             vcpu->can_offline = false;

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

Comment 2 xiagao 2017-04-10 05:39:00 UTC
Hi,

I tried to execute 'guest-get-vcpus' in qemu-ga-win-7.4.3-1.
{"execute":"guest-get-vcpus"}
{"return": [{"online": true, "logical-id": 0}, {"online": true, "logical-id": 1}, {"online": true, "logical-id": 2}, {"online": true, "logical-id": 3}]}

From comment 0, what will the expect result be in rhel7.4? And do we still not support 'guest-set-vcpus' in windows guest in rhel7.4?

I noticed that rhel guest's result is like following:
 {"return":[{"online":true,"can-offline":true,"logical-id":0},{"online":true,"can-offline":true,"logical-id":1}...

Is the result expected in windows guest like this?
{"return":[{"online":true,"can-offline":false,"logical-id":0},{"online":true,"can-offline":false,"logical-id":1}...


Thanks,
xiagao

Comment 3 Yvugenfi@redhat.com 2017-04-12 09:02:28 UTC
There is no support for guest-set-vcpus  in Windows.

Can offline should be false.

Comment 5 xiagao 2017-06-09 05:49:51 UTC
verified this bug on qemu-ga-win-7.4.5-1

{"execute":"guest-get-vcpus"}
{"return": [{"online": true, "can-offline": false, "logical-id": 0}, {"online": true, "can-offline": false, "logical-id": 1}]}

Comment 7 errata-xmlrpc 2017-08-01 12:58:08 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2017:2341