[libvirt] [PATCH 1/8] Add new API virDomain{Set, Get}BlockIoTune
Eric Blake
eblake at redhat.com
Thu Nov 10 16:09:21 UTC 2011
On 11/09/2011 11:11 PM, Xu He Jie wrote:
>>>> +++ b/include/libvirt/libvirt.h.in
>>>> @@ -1640,6 +1640,32 @@ int virDomainBlockJobSetSpeed(virDomainPtr
>>>> dom, const char *path,
>>>> int virDomainBlockPull(virDomainPtr dom, const char *path,
>>>> unsigned long bandwidth, unsigned int flags);
>>>>
>>>> +/*
>>>> + * Block I/O throttling support
>>>> + */
>>>> +
>>>> +typedef struct _virDomainBlockIoTuneInfo virDomainBlockIoTuneInfo;
>>>> +struct _virDomainBlockIoTuneInfo {
>>> This is not extensible. We've already learned the hard way that this
>>> MUST use virTypedParameter to make future additions painless, rather
>>> than hard-coding a particular structure.
>>>
> virTypedParameter is used between libvirt client and libvirtd. It isn't
> used between libvirtd and qemu.
Correct - the public interface must use virTypedParameter. Once we get
to qemu_driver.c, we can then convert from virTypedParameter to a struct
specific to qemu, but that struct should probably be declared in
qemu_monitor.h, and certainly NOT declared in libvirt.h.in.
>> Qemu monitor send all the setting parameters at one time within qmp
>> command made by qemuMonitorJSONMakeCommand,
>> the union struct virTypeParameter is not very suitable for it. So we
>> still use struct virDomainBlockIoTuneInfo
>> to keep consistent for qemu monitor command.
I have no problems with qemu monitor using a struct, my heartburn was
with the introduction of a new public struct.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list