Bug 865310

Summary: set_node_memory_parameters failed with error
Product: Red Hat Enterprise Linux 6 Reporter: weizhang <weizhan>
Component: perl-Sys-VirtAssignee: Daniel Berrangé <berrange>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: medium    
Version: 6.4CC: ajia, dallan, dyuan, mzhan, rwu, ydu
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: perl-Sys-Virt-0.10.2-4.el6 Doc Type: Bug Fix
Doc Text:
Cause: When setting memory parameters the set_node_memory_parameters method was trying to also update some readonly values Consequence: The set_node_memory_parameters API would always return an error Fix: The set_node_memory_parameters method was changed to only set parameters which had changed Result: The set_node_memory_parameters method can be used
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 09:52:25 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: 881827    

Description weizhang 2012-10-11 08:05:47 UTC
Description of problem:
set_node_memory_parameters can not work and failed with error
libvirt error code: 8, message: invalid argument: parameter 'shm_pages_shared' not supported
when I want to set shm-sleep-millisecs and shm-pages-to-scan

Version-Release number of selected component (if applicable):
perl-Sys-Virt-0.10.2-1.el6.x86_64

How reproducible:
100%

Steps to Reproduce:
1. # cat perl-test.pl
#!/usr/bin/perl
use warnings;
use strict;
use Sys::Virt;

my $uri = "qemu:///system";
my $con = Sys::Virt->new(address => $uri);

my %param = (Sys::Virt::NODE_MEMORY_SHARED_PAGES_TO_SCAN => 200, Sys::Virt::NODE_MEMORY_SHARED_SLEEP_MILLISECS => 100);
$con->set_node_memory_parameters(\%param);

2. perl perl-test.pl
  
Actual results:
libvirt error code: 8, message: invalid argument: parameter 'shm_pages_shared' not supported

Expected results:
set can succeed

Additional info:
virsh command succeed
# virsh node-memory-tune --shm-pages-to-scan 200 --shm-sleep-millisecs 100
# virsh node-memory-tune
Shared memory:
	shm_pages_to_scan 200
	shm_sleep_millisecs 100
	shm_pages_shared 0
	shm_pages_sharing 0
	shm_pages_unshared 0
	shm_pages_volatile 0
	shm_full_scans  0

Comment 2 Daniel Berrangé 2012-11-02 16:45:09 UTC
This is an issue with the way libvirt-perl does updates. It fetches all memory parameters, updates the changed ones, and sends the whole lot back. It should only send the changed ones.

Comment 3 Daniel Berrangé 2012-11-16 14:37:17 UTC
commit b067d9beac1d65892e41aa81e1b52af70ac1012d
Author: Daniel P. Berrange <berrange>
Date:   Fri Nov 16 14:10:48 2012 +0000

    Don't set all typed parameters at once
    
    It must not be assumed that all typed parameters which are read,
    can also be written. Thus when setting typed parameters, the
    list must be filtered down to only include the parameters that
    the application has requested to change.

Comment 6 weizhang 2012-11-20 02:52:45 UTC
Verify pass on
perl-Sys-Virt-0.10.2-4.el6.x86_64
libvirt-0.10.2-3.el6.x86_64


There is no error after execute perl script showed in description. And check the value of shm_pages_to_scan and shm_sleep_millisecs change according to the setting. So verify pass

Comment 8 errata-xmlrpc 2013-02-21 09:52:25 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.

http://rhn.redhat.com/errata/RHBA-2013-0377.html