44 lines
1.9 KiB
Diff
44 lines
1.9 KiB
Diff
|
From ef8cf0d4902c90595a0b0766e2a9a6ecbcbc4581 Mon Sep 17 00:00:00 2001
|
||
|
From: Chunyan Liu <cyliu@suse.com>
|
||
|
Date: Wed, 23 Jul 2014 17:42:09 +0800
|
||
|
Subject: [PATCH] fix list_domain_details: check config data length=0
|
||
|
|
||
|
If domain is created through virsh, then in xl, one could see it
|
||
|
with 'xl list', but with 'xl list --long domU', it reports:
|
||
|
"Domain name must be specified."
|
||
|
The reason is xl config data does not exist but it still tries
|
||
|
to parse_config_data in current code.
|
||
|
|
||
|
Improve list_domain_details:
|
||
|
If len of config data is 0, just pass, do not go forward to
|
||
|
parse_config_data, otherwise, it will meet error like
|
||
|
"Domain name not specified" and exit. This error is not expected,
|
||
|
since if code enters list_domain_details, domain name validness
|
||
|
is already checked and domain does exist.
|
||
|
|
||
|
Length of config data is 0 may means: config data does not exist due
|
||
|
to some reason, like: domain is created by libvirt, or in destroying
|
||
|
domain process config data is cleared but domain fails to clean up.
|
||
|
No matter in which case, list_domain_details could just show empty
|
||
|
info, but not error like "Domain name not specified".
|
||
|
|
||
|
Signed-off-by: Chunyan Liu <cyliu@suse.com>
|
||
|
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
|
||
|
---
|
||
|
tools/libxl/xl_cmdimpl.c | 2 ++
|
||
|
1 file changed, 2 insertions(+)
|
||
|
|
||
|
Index: xen-4.4.0-testing/tools/libxl/xl_cmdimpl.c
|
||
|
===================================================================
|
||
|
--- xen-4.4.0-testing.orig/tools/libxl/xl_cmdimpl.c
|
||
|
+++ xen-4.4.0-testing/tools/libxl/xl_cmdimpl.c
|
||
|
@@ -3198,6 +3198,8 @@ static void list_domains_details(const l
|
||
|
rc = libxl_userdata_retrieve(ctx, info[i].domid, "xl", &data, &len);
|
||
|
if (rc)
|
||
|
continue;
|
||
|
+ if (len == 0)
|
||
|
+ continue;
|
||
|
CHK_SYSCALL(asprintf(&config_source, "<domid %d data>", info[i].domid));
|
||
|
libxl_domain_config_init(&d_config);
|
||
|
parse_config_data(config_source, (char *)data, len, &d_config, NULL);
|