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; } -- 2.43.0