On Sat, Sep 15, 2018 at 04:29:24PM +0800, Yi Wang wrote:
> Domain fails to start when its config xml including:
> <vcpu cpuset="" current="8">64</vcpu>
>
> # virsh create vm.xml
> error: Failed to create domain from vm.xml
> error: invalid argument: Failed to parse bitmap ''
>
> This patch fixes this.
>
> Signed-off-by: Yi Wang <wang.yi59(a)zte.com.cn>
> Reviewed-by: Xi Xu <xu.xi8(a)zte.com.cn>
> ---
> src/conf/domain_conf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 8619962..bacafb2 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -18553,7 +18553,7 @@ virDomainVcpuParse(virDomainDefPtr def,
>
> if (def->placement_mode != VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) {
> tmp = virXMLPropString(vcpuNode, "cpuset");
> - if (tmp) {
> + if (tmp && strlen(tmp) != 0) {
.... '&& *tmp' would suffice.
Ok.
The patch is correct, but I believe there is a number of spots in the massive
domain_conf.c file where a similar fix would be needed, it might be worth
checking all the spots where no conversion like string-to-int string-to-enum or
any other additional parsing like address parsing is performed, those might be
good candidates.
I understand the file is massive, so let me know how that goes.
In most similar places we have already checked by the return values of function
like string-to-int string-to-enum, and if failed, libvirt will give explicit report.
To create a domain with iothread="" of disk, for instance:
# virsh create vm.xml
error: Failed to create domain from vm.xml
error: XML error: Invalid iothread attribute in disk driver element:
But the cpuset="" config error report may make people confuesd, and in the
older
version like 3.1.0 that's ok to start a domain with this config. So I think this
patch
is enough.
---
Best wishes
Yi Wang