In order to be able to use "xl info" before Xenstore has been started
or after it has crashed, hide obtaining the available Xenstore features
behind the new option "-x".
Fixes: ecce7970cfe7 ("tools/xl: add available Xenstore features to xl info
output")
Reported-by: Andrew Cooper<andrew.coop...@citrix.com>
Signed-off-by: Juergen Gross<jgr...@suse.com>
---
docs/man/xl.1.pod.in | 4 ++++
docs/man/xl.cfg.5.pod.in | 2 +-
tools/xl/xl_info.c | 14 ++++++++++----
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/docs/man/xl.1.pod.in b/docs/man/xl.1.pod.in
index fe38724b2b..88ccf7ad82 100644
--- a/docs/man/xl.1.pod.in
+++ b/docs/man/xl.1.pod.in
@@ -996,6 +996,10 @@ B<OPTIONS>
List host NUMA topology information
+=item B<-x>, B<--xenstore>
+
+Show Xenstore features available.
+
=back
=item B<top>
diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index f0c920b39d..acff45d308 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -743,7 +743,7 @@ condition.
=back
The features supported by the running Xenstore instance can be retrieved
-via the B<xl info> command in dom0.
+via the B<xl info -x> command in dom0.
The default value is B<0xffffffff>, meaning that all possible Xenstore
features are visible by the guest.
diff --git a/tools/xl/xl_info.c b/tools/xl/xl_info.c
index eb019e3ee9..d3583cbf8f 100644
--- a/tools/xl/xl_info.c
+++ b/tools/xl/xl_info.c
@@ -353,7 +353,7 @@ static void output_xenstore_info(void)
xs_close(xsh);
}
-static void print_info(int numa)
+static void print_info(int numa, bool xs)
{
output_nodeinfo();
@@ -365,7 +365,8 @@ static void print_info(int numa)
}
output_xeninfo();
- output_xenstore_info();
+ if (xs)
+ output_xenstore_info();
maybe_printf("xend_config_format : 4\n");
@@ -631,14 +632,19 @@ int main_info(int argc, char **argv)
int opt;
static struct option opts[] = {
{"numa", 0, 0, 'n'},
+ {"xenstore", 0, 0, 'x'},
COMMON_LONG_OPTS
};
int numa = 0;
+ bool xs = false;
- SWITCH_FOREACH_OPT(opt, "n", opts, "info", 0) {
+ SWITCH_FOREACH_OPT(opt, "nx", opts, "info", 0) {
case 'n':
numa = 1;
break;
+ case 'x':
+ xs = true;
+ break;
}
/*
@@ -648,7 +654,7 @@ int main_info(int argc, char **argv)
if (numa == 0 && argc > optind)
info_name = argv[optind];
- print_info(numa);
+ print_info(numa, xs);
return 0;
}