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(a)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