[libvirt] [PATCH] conf: rewrite filtering for capabilities lookup

Michal Privoznik mprivozn at redhat.com
Thu Aug 9 14:58:23 UTC 2018


On 08/03/2018 04:28 PM, Daniel P. Berrangé wrote:
> The virCapabilitiesDomainDataLookupInternal() is given a list of
> parameters representing the desired domain characteristics. It then has
> to look throught the capabilities to identify an acceptable match.
> 
> The virCapsDomainDataCompare() method is used for filtering out
> candidates which don't match the desired criteria. It is called
> primarily from the innermost loops and as such is doing many repeated
> checks. For example if architcture and os type were checked at the top
> level loop the two inner loops could be avoided entirely. If emulator
> and domain type were checked in the 2nd level loop the 3rd level loop
> can be avoided too.
> 
> This change thus removes the virCapsDomainDataCompare() method and puts
> suitable checks at the start of each loop to ensure it executes the
> minimal number of loop iterations possible. The code becomes clearer to
> understand as a nice side-effect.

Unfinished sen... ;-)

> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/conf/capabilities.c | 100 ++++++++++++++++++----------------------
>  1 file changed, 45 insertions(+), 55 deletions(-)
> 


> @@ -731,6 +720,7 @@ virCapabilitiesDomainDataLookupInternal(virCapsPtr caps,
>              goto error;
>          }
>  
> +        VIR_DEBUG("No match %s", virBufferCurrentContent(&buf));
>          virReportError(VIR_ERR_INVALID_ARG,
>                         _("could not find capabilities for %s"),
>                         virBufferCurrentContent(&buf));
> 

This debug is pretty useless because the error message is the same and
will be in the logs too.

ACK

Michal




More information about the libvir-list mailing list