Bug 996466

Summary: Incorrect return value when setvcpus using invalid vcpu number.
Product: Red Hat Enterprise Linux 6 Reporter: Hao Liu <hliu>
Component: libvirtAssignee: Peter Krempa <pkrempa>
Status: CLOSED WONTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.5CC: acathrow, codong, dyuan, hliu, lsu, mzhan, pkrempa
Target Milestone: rcKeywords: Upstream
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 996552 (view as bug list) Environment:
Last Closed: 2014-04-04 20:57:27 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:    
Bug Blocks: 996552    

Description Hao Liu 2013-08-13 08:29:14 UTC
Description of problem:
Incorrect return value when setvcpus using invalid vcpu number.

Version-Release number of selected component (if applicable):
libvirt-0.10.2-21.el6.x86_64
kernel-2.6.32-410.el6.x86_64
qemu-kvm-rhev-0.12.1.2-2.386.el6.x86_64

How reproducible:
always

Steps to Reproduce:
1. make sure a domain 'foo' is managed, no matter if started or shut off.
2. set vcpu number using an invalid number.
# virsh setvcpus foo --count invalid-number
3. check the return value.
# echo $?

Actual results:

output:
for step 2:
error: Invalid number of virtual CPUs
for step 3:
0

Expected results:
for step 3:
1

Additional Info:
in cmdSetvcpus of virsh-domain.c:
>   if (vshCommandOptInt(cmd, "count", &count) < 0 || count <= 0) {
>       vshError(ctl, "%s", _("Invalid number of virtual CPUs"));
>       goto cleanup;
>   }

might should be changed to:
>   if (vshCommandOptInt(cmd, "count", &count) < 0 || count <= 0) {
>       vshError(ctl, "%s", _("Invalid number of virtual CPUs"));
>       ret = false;
>       goto cleanup;
>   }

Comment 2 Peter Krempa 2013-08-13 12:29:08 UTC
Fixed upstream with:

commit 3abb6ec077f7fdc9ac9969b5c33f2c2d270903f3
Author: Peter Krempa <pkrempa>
Date:   Tue Aug 13 11:14:56 2013 +0200

    virsh-domain: Flip logic in cmdSetvcpus
    
    To avoid having to assign a failure code to the returned variable switch
    this function to negative logic. This will fix issue with invalid number
    of cpus returning success return code.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=996466

Comment 3 CongDong 2013-09-11 06:56:24 UTC
I can repruduce this with:
# rpm -qa libvirt kernel qemu-kvm
qemu-kvm-0.12.1.2-2.401.el6.x86_64
kernel-2.6.32-412.el6.x86_64
libvirt-0.10.2-23.el6.x86_64

Invalid value
# virsh setvcpus rhel6.4 asdf
error: Invalid number of virtual CPUs

# echo $?
0
# virsh setvcpus rhel6.4 --count -1 --config
error: Invalid number of virtual CPUs

# echo $?
0
# virsh setvcpus rhel6.4 --count -1
error: Invalid number of virtual CPUs

# echo $?
0

Result:
Error message:
error: Invalid number of virtual CPUs
But the reture value is always 0.

Comment 7 RHEL Program Management 2014-04-04 20:57:27 UTC
Development Management has reviewed and declined this request.
You may appeal this decision by reopening this request.