On Wed, Jun 17, 2015 at 16:53:14 -0400, John Ferlan wrote:
On 06/15/2015 03:47 PM, Peter Krempa wrote:
> virDomainObjGetOneDef will help to retrieve the correct definition
> pointer from @vm in cases where VIR_DOMAIN_AFFECT_LIVE and
> VIR_DOMAIN_AFFECT_CONFIG are mutually exclusive. The function simply
> returns the correct pointer. This similarly to virDomainObjGetDefs will
> greatly simplify the code.
> ---
> src/conf/domain_conf.c | 36 ++++++++++++++++++++++++++++++++++++
> src/conf/domain_conf.h | 1 +
> src/libvirt_private.syms | 1 +
> 3 files changed, 38 insertions(+)
>
I dunno - I just have this little voice asking is there some corner case
from the prior virDomainLiveConfigHelperMethod thruough possibly
creating 'newDef' in virDomainObjSetDefTransient that this new code will
miss... IOW - is there a condition where CONFIG is wanted, domain is
running, but newDef is NULL.
Well, up until now I've inspected the qemu driver and the test driver
and both set the transient def upon start of a VM, so we should be fine
using this in those.
Honestly I think that all drivers should be fixed and
virDomainLiveConfigHelperMethod should be killed with fire forever.
OTOH - one wonders if the previous code went through the patch into
virDomainObjSetDefTransient
All the callers check for NULL, so that's not an issue - just
considering some strange corner case for a transient domain.
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 3cc182b..35e1cb4 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -2948,6 +2948,42 @@ virDomainObjGetDefs(virDomainObjPtr vm,
> }
>
>
> +/**
> + * virDomainObjGetOneDef:
> + *
> + * @vm: Domain object
> + * @flags: for virDomainModificationImpact
> + *
> + * Helper function to resolve @flags and return the correct domain pointer
> + * object. This function returns one of @vm->def or @vm->persistentDef
> + * according to @flags. This helper should be used only in APIs that guarantee
> + * that @flags contains exactly one of VIR_DOMAIN_AFFECT_LIVE,
s/,/ or/
> + * VIR_DOMAIN_AFFECT_CONFIG.
and to be really redundant ;-) - couldn't resist.
s/./ and not both./
ACK - although "GetOneDef" isn't my favorite, I don't have a better
suggestion either.
Me neither but that can be changed in the future.
John
I've pushed this series with the suggested changes and I'll follow up
with fixes to the endjob label and the double space.
Thanks.
Peter