[libvirt] [PATCH 05/13] conf: utility to return alias of a controller based on type/index
John Ferlan
jferlan at redhat.com
Fri May 8 17:44:56 UTC 2015
On 05/05/2015 02:03 PM, Laine Stump wrote:
> Because there are multiple potential reasons for an error, this
> function logs any errors before returning NULL (since the caller won't
> have the information needed to determine which was the reason for
> failure).
> ---
> src/conf/domain_conf.c | 34 ++++++++++++++++++++++++++++++++++
> src/conf/domain_conf.h | 3 +++
> src/libvirt_private.syms | 1 +
> 3 files changed, 38 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 4cd36a1..22f49c9 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -12554,6 +12554,40 @@ virDomainControllerFind(virDomainDefPtr def,
> return -1;
> }
>
> +
> +const char *
> +virDomainControllerAliasFind(virDomainDefPtr def,
> + int type, int idx)
> +{
> + int contIndex;
> + const char *contTypeStr = virDomainControllerTypeToString(type);
> +
> + if (!contTypeStr) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Unknown controller type %d"),
> + type);
> + return NULL;
> + }
Unless this is LAST ... in which case there's a lot more places in the
code that are going to fail using the *ToString calls.
> +
> + contIndex = virDomainControllerFind(def, type, idx);
> + if (contIndex < 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Could not find %s controller with index %d "
> + "required for device"),
> + contTypeStr, idx);
> + return NULL;
> + }
> + if (!def->controllers[contIndex]->info.alias) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Device alias was not set for %s controller "
> + "with index %d "),
> + contTypeStr, idx);
> + return NULL;
So if the alias wasn't set for some reason we're going to start seeing
errors. Is there a reason the alias wouldn't be set... (just trying to
think/type outloud later in the day at the end of the week as my brain
is beginning to check out).
ACK - although I'm still trying to read ahead a bit and may come back to
this...
John
> + }
> + return def->controllers[contIndex]->info.alias;
> +}
> +
> +
> int
> virDomainControllerFindByType(virDomainDefPtr def,
> int type)
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 087d282..7cc655b 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -2754,6 +2754,9 @@ int virDomainControllerFindByType(virDomainDefPtr def, int type);
> int virDomainControllerFindByPCIAddress(virDomainDefPtr def,
> virDevicePCIAddressPtr addr);
> virDomainControllerDefPtr virDomainControllerRemove(virDomainDefPtr def, size_t i);
> +const char *virDomainControllerAliasFind(virDomainDefPtr def,
> + int type, int idx)
> + ATTRIBUTE_NONNULL(1);
>
> int virDomainLeaseIndex(virDomainDefPtr def,
> virDomainLeaseDefPtr lease);
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index c8e6fb4..0eb5f75 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -181,6 +181,7 @@ virDomainClockBasisTypeToString;
> virDomainClockOffsetTypeFromString;
> virDomainClockOffsetTypeToString;
> virDomainConfigFile;
> +virDomainControllerAliasFind;
> virDomainControllerDefFree;
> virDomainControllerFind;
> virDomainControllerFindByType;
>
More information about the libvir-list
mailing list