[libvirt] [PATCH] report invalid x86 cpu map error

Jiri Denemark jdenemar at redhat.com
Mon Jan 14 13:56:43 UTC 2019


On Mon, Jan 14, 2019 at 20:07:34 +0800, zhenwei pi wrote:
> Let libvirtd handle invalid x86 cpu map error, and report the real reason.
> 
> This issue can be reproduced :
> 1, rm -rf /share/libvirt/cpu_map
> 2, start libvirtd
> 3, virsh create INSTANCE.xml
> 
> Libvirtd reports error :
> error: invalid argument: Failed to parse group 'tss'
> 
> In face, libvirtd gets invalid cpu map.
> With this patch, libvirtd reports error :
> error: unsupported configuration: invalid x86 cpu map
> 
> Signed-off-by: zhenwei pi <pizhenwei at bytedance.com>
> ---
>  src/cpu/cpu_x86.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
> index d3a88da21d..91419d91d4 100644
> --- a/src/cpu/cpu_x86.c
> +++ b/src/cpu/cpu_x86.c
> @@ -2902,8 +2902,11 @@ virCPUx86ValidateFeatures(virCPUDefPtr cpu)
>      virCPUx86MapPtr map;
>      size_t i;
>  
> -    if (!(map = virCPUx86GetMap()))
> +    if (!(map = virCPUx86GetMap())) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                        _("invalid x86 cpu map"));
>          return -1;
> +    }

This is definitely not the right place to fix the issue. virCPUx86GetMap
is called from a lot of places and your patch would only fix one of
them. Moreover the message itself is not very helpful as it doesn't say
why the CPU map is invalid. The right solution would be to show the
error reported from virCPUx86LoadMap. However, it is called inside
virCPUx86DriverOnceInit, which is only called once per libvirtd life
time. I think you'd need to store that error and reuse it everytime
cpuMap is NULL inside virCPUx86GetMap.

Jirka




More information about the libvir-list mailing list