[libvirt] [PATCH 1/5] qemu: Only set group_name when actually requested
Martin Kletzander
mkletzan at redhat.com
Thu Jan 26 14:18:24 UTC 2017
On Thu, Jan 26, 2017 at 12:43:09PM +0100, Michal Privoznik wrote:
>On 01/25/2017 03:18 PM, John Ferlan wrote:
>>
>>
>> On 01/25/2017 08:55 AM, Martin Kletzander wrote:
>>> On Wed, Jan 25, 2017 at 06:43:39AM -0500, John Ferlan wrote:
>>>>
>>>>
>>>> On 01/25/2017 04:16 AM, Martin Kletzander wrote:
>>>>> We were setting it based on whether it was supported and that lead to
>>>>> setting it to NULL, which our JSON code caught. However it ended up
>>>>> producing the following results:
>>>>>
>>>>> $ virsh blkdeviotune fedora vda --total-bytes-sec-max 2000
>>>>> error: Unable to change block I/O throttle
>>>>> error: internal error: argument key 'group' must not have null value
>>>>>
>>>>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>>>>> ---
>>>>> src/qemu/qemu_driver.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>>>>> index 516a851d3d55..f45972e3c823 100644
>>>>> --- a/src/qemu/qemu_driver.c
>>>>> +++ b/src/qemu/qemu_driver.c
>>>>> @@ -17506,7 +17506,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
>>>>> qemuDomainObjEnterMonitor(driver, vm);
>>>>> ret = qemuMonitorSetBlockIoThrottle(priv->mon, device,
>>>>> &info, supportMaxOptions,
>>>>> - supportGroupNameOption,
>>>>> + set_fields &
>>>>> QEMU_BLOCK_IOTUNE_SET_GROUP_NAME,
>>>>> supportMaxLengthOptions);
>>>>> if (qemuDomainObjExitMonitor(driver, vm) < 0)
>>>>> ret = -1;
>>>>>
>>>>
>>>> I believe this should be a change to qemuMonitorJSONSetBlockIoThrottle
>>>> to use 'S' instead of 's' in the virJSONValueObjectAdd call.
>>>>
>>>> Been too long to remember why I went with 's' - although I wonder if it
>>>> had to do with "unsetting" the value... I do believe I should have gone
>>>> with my first instincts on this and should have made the design around
>>>> allowing the user to define a group number to use and then convert that
>>>> into a group name string with a static prefix and the number <sigh>.
>>>>
>>>
>>> The way other options (like _max options, or the _bytes,_iops) work like
>>> this *because* they need to be set either all or none. The group_name
>>> can be set or not set by itself, no need for other options as there is
>>> no clash if you just update that. You also can't set it to what you got
>>> from QEMU, because QEMU can change it automatically; if you have no
>>> block I/O throttle set at all then there is no group, when you set
>>> anything the group name defaults to the id of the device (that way it is
>>> unique and it works like there is no group). The same way if you then
>>> want to reset it, without changing the group name, you can't set
>>> everything to zeroes and then group name to the same string, it will be
>>> reset anyway. So group name should've had a different treatment than
>>> the other options.
>>>
>>
>> You have an ACK from Michal for the methodology you've chosen - that's
>> fine - I just think it's cleaner to use the 'S' instead of 's'.
>
>We can combine these two approaches, can't we? That way we are double
>sure that the bug will not occur again :-)
>
OK, I did that now.
>Michal
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170126/13780c47/attachment-0001.sig>
More information about the libvir-list
mailing list