[libvirt] [PATCH] domiftune: clean up previous patches
Hu Tao
hutao at cn.fujitsu.com
Tue Jan 3 02:46:34 UTC 2012
On Mon, Jan 02, 2012 at 02:37:03PM -0700, Eric Blake wrote:
> Most severe here is a latent (but currently untriggered) memory leak
> if any hypervisor ever adds a string interface property; the
> remainder are mainly cosmetic.
>
> * include/libvirt/libvirt.h.in (VIR_DOMAIN_BANDWIDTH_*): Move
> macros closer to interface that uses them, and document type.
> * src/libvirt.c (virDomainSetInterfaceParameters)
> (virDomainGetInterfaceParameters): Formatting tweaks.
> * daemon/remote.c (remoteDispatchDomainGetInterfaceParameters):
> Avoid memory leak.
> * src/libvirt_public.syms (LIBVIRT_0.9.9): Sort lines.
> * src/libvirt_private.syms (domain_conf.h): Likewise.
> * src/qemu/qemu_driver.c (qemuDomainSetInterfaceParameters): Fix
> comments, break long lines.
> ---
> daemon/remote.c | 5 +-
> include/libvirt/libvirt.h.in | 104 +++++++++++++++++++++++-------------------
> src/libvirt.c | 21 ++++++--
> src/libvirt_private.syms | 10 ++--
> src/libvirt_public.syms | 4 +-
> src/qemu/qemu_driver.c | 24 ++++++----
> 6 files changed, 97 insertions(+), 71 deletions(-)
>
> diff --git a/daemon/remote.c b/daemon/remote.c
> index b7ba321..a28a754 100644
> --- a/daemon/remote.c
> +++ b/daemon/remote.c
> @@ -1,7 +1,7 @@
> /*
> * remote.c: handlers for RPC method calls
> *
> - * Copyright (C) 2007-2011 Red Hat, Inc.
> + * Copyright (C) 2007-2012 Red Hat, Inc.
> *
> * This library is free software; you can redistribute it and/or
> * modify it under the terms of the GNU Lesser General Public
> @@ -3495,9 +3495,10 @@ success:
> cleanup:
> if (rv < 0)
> virNetMessageSaveError(rerr);
> + virTypedParameterArrayClear(params, nparams);
> + VIR_FREE(params);
> if (dom)
> virDomainFree(dom);
> - VIR_FREE(params);
> return rv;
> }
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index f59c3b1..ad6fcce 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -4,7 +4,7 @@
> * Description: Provides the interfaces of the libvirt library to handle
> * virtualized domains
> *
> - * Copy: Copyright (C) 2005-2006, 2010-2011 Red Hat, Inc.
> + * Copy: Copyright (C) 2005-2006, 2010-2012 Red Hat, Inc.
> *
> * See COPYING.LIB for the License of this software
> *
> @@ -645,48 +645,6 @@ typedef virTypedParameter *virTypedParameterPtr;
> */
> #define VIR_DOMAIN_SCHEDULER_SHARES "shares"
>
> -/**
> - * VIR_DOMAIN_BANDWIDTH_IN_AVERAGE:
> - *
> - * Macro represents the inbound average of NIC bandwidth.
> - */
> -#define VIR_DOMAIN_BANDWIDTH_IN_AVERAGE "inbound.average"
> -
> -/**
> - * VIR_DOMAIN_BANDWIDTH_IN_PEAK:
> - *
> - * Macro represents the inbound peak of NIC bandwidth.
> - */
> -#define VIR_DOMAIN_BANDWIDTH_IN_PEAK "inbound.peak"
> -
> -/**
> - * VIR_DOMAIN_BANDWIDTH_IN_BURST:
> - *
> - * Macro represents the inbound burst of NIC bandwidth.
> - */
> -#define VIR_DOMAIN_BANDWIDTH_IN_BURST "inbound.burst"
> -
> -/**
> - * VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE:
> - *
> - * Macro represents the outbound average of NIC bandwidth.
> - */
> -#define VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE "outbound.average"
> -
> -/**
> - * VIR_DOMAIN_BANDWIDTH_OUT_PEAK:
> - *
> - * Macro represents the outbound peak of NIC bandwidth.
> - */
> -#define VIR_DOMAIN_BANDWIDTH_OUT_PEAK "outbound.peak"
> -
> -/**
> - * VIR_DOMAIN_BANDWIDTH_OUT_BURST:
> - *
> - * Macro represents the outbound burst of NIC bandwidth.
> - */
> -#define VIR_DOMAIN_BANDWIDTH_OUT_BURST "outbound.burst"
> -
> /*
> * Fetch scheduler parameters, caller allocates 'params' field of size 'nparams'
> */
> @@ -1488,6 +1446,51 @@ int virDomainInterfaceStats (virDomainPtr dom,
> const char *path,
> virDomainInterfaceStatsPtr stats,
> size_t size);
> +
> +/* Management of interface parameters */
> +
> +/**
> + * VIR_DOMAIN_BANDWIDTH_IN_AVERAGE:
> + *
> + * Macro represents the inbound average of NIC bandwidth, as a uint.
> + */
> +#define VIR_DOMAIN_BANDWIDTH_IN_AVERAGE "inbound.average"
> +
> +/**
> + * VIR_DOMAIN_BANDWIDTH_IN_PEAK:
> + *
> + * Macro represents the inbound peak of NIC bandwidth, as a uint.
> + */
> +#define VIR_DOMAIN_BANDWIDTH_IN_PEAK "inbound.peak"
> +
> +/**
> + * VIR_DOMAIN_BANDWIDTH_IN_BURST:
> + *
> + * Macro represents the inbound burst of NIC bandwidth, as a uint.
> + */
> +#define VIR_DOMAIN_BANDWIDTH_IN_BURST "inbound.burst"
> +
> +/**
> + * VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE:
> + *
> + * Macro represents the outbound average of NIC bandwidth, as a uint.
> + */
> +#define VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE "outbound.average"
> +
> +/**
> + * VIR_DOMAIN_BANDWIDTH_OUT_PEAK:
> + *
> + * Macro represents the outbound peak of NIC bandwidth, as a uint.
> + */
> +#define VIR_DOMAIN_BANDWIDTH_OUT_PEAK "outbound.peak"
> +
> +/**
> + * VIR_DOMAIN_BANDWIDTH_OUT_BURST:
> + *
> + * Macro represents the outbound burst of NIC bandwidth, as a uint.
> + */
> +#define VIR_DOMAIN_BANDWIDTH_OUT_BURST "outbound.burst"
> +
> int virDomainSetInterfaceParameters (virDomainPtr dom,
> const char *device,
> virTypedParameterPtr params,
> @@ -1496,10 +1499,9 @@ int virDomainGetInterfaceParameters (virDomainPtr dom,
> const char *device,
> virTypedParameterPtr params,
> int *nparams, unsigned int flags);
> -int virDomainMemoryStats (virDomainPtr dom,
> - virDomainMemoryStatPtr stats,
> - unsigned int nr_stats,
> - unsigned int flags);
> +
> +/* Management of domain block devices */
> +
> int virDomainBlockPeek (virDomainPtr dom,
> const char *disk,
> unsigned long long offset,
> @@ -1546,7 +1548,15 @@ int virDomainGetBlockInfo(virDomainPtr dom,
> virDomainBlockInfoPtr info,
> unsigned int flags);
>
> +/* Management of domain memory */
> +
> +int virDomainMemoryStats (virDomainPtr dom,
> + virDomainMemoryStatPtr stats,
> + unsigned int nr_stats,
> + unsigned int flags);
> +
> /* Memory peeking flags. */
> +
> typedef enum {
> VIR_MEMORY_VIRTUAL = 1, /* addresses are virtual addresses */
> VIR_MEMORY_PHYSICAL = 2, /* addresses are physical addresses */
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 9507902..feb3ca6 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -2,7 +2,7 @@
> * libvirt.c: Main interfaces for the libvirt library to handle virtualization
> * domains from a process running in domain 0
> *
> - * Copyright (C) 2005-2006, 2008-2011 Red Hat, Inc.
> + * Copyright (C) 2005-2006, 2008-2012 Red Hat, Inc.
> *
> * See COPYING.LIB for the License of this software
> *
> @@ -7084,7 +7084,12 @@ error:
> * less than the number of parameters supported)
> * @flags: bitwise-OR of virDomainModificationImpact
> *
> - * Currently this function sets bandwidth parameters of interface.
> + * Change a subset or all parameters of interface; currently this
> + * includes bandwidth parameters. The value of @flags should be
> + * either VIR_DOMAIN_AFFECT_CURRENT, or a bitwise-or of values from
> + * VIR_DOMAIN_AFFECT_LIVE and VIR_DOMAIN_AFFECT_CURRENT, although
> + * hypervisors vary in which flags are supported.
> + *
> * This function may require privileged access to the hypervisor.
> *
> * Returns -1 in case of error, 0 in case of success.
> @@ -7122,7 +7127,9 @@ virDomainSetInterfaceParameters(virDomainPtr domain,
>
> if (conn->driver->domainSetInterfaceParameters) {
> int ret;
> - ret = conn->driver->domainSetInterfaceParameters(domain, device, params, nparams, flags);
> + ret = conn->driver->domainSetInterfaceParameters(domain, device,
> + params, nparams,
> + flags);
> if (ret < 0)
> goto error;
> return ret;
> @@ -7141,8 +7148,8 @@ error:
> * @device: the interface name or mac address
> * @params: pointer to interface parameter objects
> * (return value, allocated by the caller)
> - * @nparams: pointer to number of interface parameter
> - * @flags: one of virDomainModificationImpact
> + * @nparams: pointer to number of interface parameter; input and output
> + * @flags: bitwise-OR of virDomainModificationImpact and virTypedParameterFlags
> *
> * Get all interface parameters. On input, @nparams gives the size of
> * the @params array; on output, @nparams gives how many slots were
> @@ -7193,7 +7200,9 @@ virDomainGetInterfaceParameters(virDomainPtr domain,
>
> if (conn->driver->domainGetInterfaceParameters) {
> int ret;
> - ret = conn->driver->domainGetInterfaceParameters (domain, device, params, nparams, flags);
> + ret = conn->driver->domainGetInterfaceParameters(domain, device,
> + params, nparams,
> + flags);
> if (ret < 0)
> goto error;
> return ret;
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 216a5a5..ac2c52e 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -260,10 +260,10 @@ virDomainConfigFile;
> virDomainControllerDefFree;
> virDomainControllerInsert;
> virDomainControllerInsertPreAlloced;
> -virDomainControllerModelUSBTypeFromString;
> -virDomainControllerModelUSBTypeToString;
> virDomainControllerModelSCSITypeFromString;
> virDomainControllerModelSCSITypeToString;
> +virDomainControllerModelUSBTypeFromString;
> +virDomainControllerModelUSBTypeToString;
> virDomainControllerTypeToString;
> virDomainCpuSetFormat;
> virDomainCpuSetParse;
> @@ -308,7 +308,6 @@ virDomainDiskSnapshotTypeFromString;
> virDomainDiskSnapshotTypeToString;
> virDomainDiskTypeFromString;
> virDomainDiskTypeToString;
> -virDomainNetFind;
> virDomainFSDefFree;
> virDomainFSTypeFromString;
> virDomainFSTypeToString;
> @@ -366,12 +365,13 @@ virDomainLoadAllConfigs;
> virDomainMemballoonModelTypeFromString;
> virDomainMemballoonModelTypeToString;
> virDomainNetDefFree;
> +virDomainNetFind;
> virDomainNetGetActualBandwidth;
> virDomainNetGetActualBridgeName;
> virDomainNetGetActualDirectDev;
> virDomainNetGetActualDirectMode;
> -virDomainNetGetActualType;
> virDomainNetGetActualDirectVirtPortProfile;
> +virDomainNetGetActualType;
> virDomainNetIndexByMac;
> virDomainNetInsert;
> virDomainNetRemoveByMac;
> @@ -462,9 +462,9 @@ virDomainVideoDefaultRAM;
> virDomainVideoDefaultType;
> virDomainVideoTypeFromString;
> virDomainVideoTypeToString;
> +virDomainVirtTypeToString;
> virDomainVirtioEventIdxTypeFromString;
> virDomainVirtioEventIdxTypeToString;
> -virDomainVirtTypeToString;
> virDomainWatchdogActionTypeFromString;
> virDomainWatchdogActionTypeToString;
> virDomainWatchdogModelTypeFromString;
> diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
> index ea6d562..4ca7216 100644
> --- a/src/libvirt_public.syms
> +++ b/src/libvirt_public.syms
> @@ -510,10 +510,10 @@ LIBVIRT_0.9.8 {
>
> LIBVIRT_0.9.9 {
> global:
> - virDomainGetNumaParameters;
> - virDomainSetNumaParameters;
> virDomainGetInterfaceParameters;
> + virDomainGetNumaParameters;
> virDomainSetInterfaceParameters;
> + virDomainSetNumaParameters;
> } LIBVIRT_0.9.8;
>
> # .... define new API here using predicted next version number ....
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index e93fe87..ad592d6 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -1,7 +1,7 @@
> /*
> * qemu_driver.c: core driver methods for managing qemu guests
> *
> - * Copyright (C) 2006-2011 Red Hat, Inc.
> + * Copyright (C) 2006-2012 Red Hat, Inc.
> * Copyright (C) 2006 Daniel P. Berrange
> *
> * This library is free software; you can redistribute it and/or
> @@ -7920,7 +7920,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> if (STREQ(param->field, VIR_DOMAIN_BANDWIDTH_IN_AVERAGE)) {
> if (param->type != VIR_TYPED_PARAM_UINT) {
> qemuReportError(VIR_ERR_INVALID_ARG, "%s",
> - _("invalid type for bandwidth average tunable, expected a 'unsigned int'"));
> + _("invalid type for bandwidth average tunable, "
> + "expected an 'unsigned int'"));
> goto cleanup;
> }
>
> @@ -7928,7 +7929,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> } else if (STREQ(param->field, VIR_DOMAIN_BANDWIDTH_IN_PEAK)) {
> if (param->type != VIR_TYPED_PARAM_UINT) {
> qemuReportError(VIR_ERR_INVALID_ARG, "%s",
> - _("invalid type for bandwidth peak tunable, expected a 'unsigned int'"));
> + _("invalid type for bandwidth peak tunable, "
> + "expected an 'unsigned int'"));
> goto cleanup;
> }
>
> @@ -7936,7 +7938,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> } else if (STREQ(param->field, VIR_DOMAIN_BANDWIDTH_IN_BURST)) {
> if (param->type != VIR_TYPED_PARAM_UINT) {
> qemuReportError(VIR_ERR_INVALID_ARG, "%s",
> - _("invalid type for bandwidth burst tunable, expected a 'unsigned int'"));
> + _("invalid type for bandwidth burst tunable, "
> + "expected an 'unsigned int'"));
> goto cleanup;
> }
>
> @@ -7944,7 +7947,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> } else if (STREQ(param->field, VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE)) {
> if (param->type != VIR_TYPED_PARAM_UINT) {
> qemuReportError(VIR_ERR_INVALID_ARG, "%s",
> - _("invalid type for bandwidth average tunable, expected a 'unsigned int'"));
> + _("invalid type for bandwidth average tunable, "
> + "expected an 'unsigned int'"));
> goto cleanup;
> }
>
> @@ -7952,7 +7956,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> } else if (STREQ(param->field, VIR_DOMAIN_BANDWIDTH_OUT_PEAK)) {
> if (param->type != VIR_TYPED_PARAM_UINT) {
> qemuReportError(VIR_ERR_INVALID_ARG, "%s",
> - _("invalid type for bandwidth peak tunable, expected a 'unsigned int'"));
> + _("invalid type for bandwidth peak tunable, "
> + "expected an 'unsigned int'"));
> goto cleanup;
> }
>
> @@ -7960,7 +7965,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> } else if (STREQ(param->field, VIR_DOMAIN_BANDWIDTH_OUT_BURST)) {
> if (param->type != VIR_TYPED_PARAM_UINT) {
> qemuReportError(VIR_ERR_INVALID_ARG, "%s",
> - _("invalid type for bandwidth burst tunable, expected a 'unsigned int'"));
> + _("invalid type for bandwidth burst tunable, "
> + "expected an 'unsigned int'"));
> goto cleanup;
> }
>
> @@ -7973,9 +7979,9 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
> }
> }
>
> - /* average is mandatory, peak and burst is optional. So if no
> + /* average is mandatory, peak and burst are optional. So if no
> * average is given, we free inbound/outbound here which causes
> - * inbound/outbound won't be set. */
> + * inbound/outbound to not be set. */
> if (!bandwidth->in->average) {
> VIR_FREE(bandwidth->in);
> bandwidth->in = NULL;
> --
> 1.7.7.4
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
ACK.
--
Thanks,
Hu Tao
More information about the libvir-list
mailing list