Bug 800734

Summary: Error prompt when calling $dom->set_blkio_parameters API
Product: Red Hat Enterprise Linux 6 Reporter: xhu
Component: perl-Sys-VirtAssignee: Daniel Berrangé <berrange>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.3CC: ajia, dyuan, hbrock, mshao, mzhan, rwu
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: perl-Sys-Virt-0.9.10-3.el6 Doc Type: Bug Fix
Doc Text:
Cause The Perl API bindings did not handle tunable parameters in string format Consequence It was not possible to read/update the block I/O tunable parameters Fix Support for string parameters was implemented Result The block I/O tunable parameters can be read/updated from the Perl API.
Story Points: ---
Clone Of:
: 804028 (view as bug list) Environment:
Last Closed: 2012-06-20 12:00:57 UTC Type: ---
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: 804028    
Bug Blocks:    
Attachments:
Description Flags
patch for the issue. none

Description xhu 2012-03-07 05:47:20 UTC
Description of problem:


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


How reproducible:
everytimes

Steps to Reproduce:
Make sure you have a running guest named "vr-rhel6-x86_64-kvm"
1. prepare set_blkio.pl as follows:
# cat set_blkio.pl 
#!/usr/bin/perl
use warnings;
use strict;
use Sys::Virt;

my $uri = "qemu:///system";
my $domname = "vr-rhel6-x86_64-kvm";
my $flags = 0;

my $con = Sys::Virt->new(address => $uri, readonly => 0);
my $dom = $con->get_domain_by_name($domname);
my $weight = 600;

my %blkio = (Sys::Virt::Domain::BLKIO_WEIGHT => $weight);
$dom->set_blkio_parameters(\%blkio);

2. Run set_blkio.pl:
# perl set_blkio.pl 
libvirt error code: 8, message: invalid argument: unable to parse
  
Actual results:
After step 2, error prompt

Expected results:
should set blkio weight successfully.

Additional info:

Comment 1 Alex Jia 2012-03-07 07:18:40 UTC
Hi Daniel,
It may be a common issues, the set_block_iotune(), set_interface_parameters() and set_numa_parameters() probably have similar issues. For set_blkio_parameters(), the argument device_weight is a string type, however, the vir_typed_param_from_hv() and vir_typed_param_to_hv() are missing 'case VIR_TYPED_PARAM_STRING' branch and related handling.

In addition, in set_blkio_parameters(), the vir_typed_param_from_hv(newparams, params, nparams) will return a newparams reference, but the virDomainSetBlkioParameters(dom, params, nparams, 0) hasn't used it, I think the second parameter should be 'newparams' and need to covert data type to  virBlkioParameter/virTypedParameterPtr, unfortunately, it doesn't work for me, it seems I gave a error data type, the attachment is my patch, please help see this issue.


Regards & Thanks,
Alex

Comment 2 Alex Jia 2012-03-07 07:22:18 UTC
Created attachment 568174 [details]
patch for the issue.

Comment 3 xhu 2012-03-07 07:51:17 UTC
The component version are as follows:
perl-Sys-Virt-0.9.10-2.el6.x86_64
libvirt-0.9.10-4.el6.x86_64
qemu-kvm-0.12.1.2-2.234.el6.x86_64

Comment 4 Daniel Berrangé 2012-03-16 11:13:05 UTC
Pushed a variant on Alex's patch upstream.

commit a9ab38ef284915198c34c375592534bd9598db4c
Author: Alex Jia <ajia>
Date:   Fri Mar 16 10:38:54 2012 +0000

    Add handling of VIR_TYPED_PARAM_STRING



This also requires bug 804028 in libvirt to be fixed, before re-testing

Comment 8 Daniel Berrangé 2012-05-01 09:08:39 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause
    The Perl API bindings did not handle tunable parameters in string format
Consequence
    It was not possible to read/update the block I/O tunable parameters
Fix
    Support for string parameters was implemented
Result
    The block I/O tunable parameters can be read/updated from the Perl API.

Comment 10 errata-xmlrpc 2012-06-20 12:00:57 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-2012-0754.html