From 4efc1da300e3deb15f24ae3c3d4780c1941e3548 Mon Sep 17 00:00:00 2001 From: Juergen Gross Date: Fri, 15 Aug 2025 16:32:36 +0200 Subject: [PATCH] tools/xl: hide xenstore-features behind option 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: Ross Lagerwall Signed-off-by: Juergen Gross Acked-by: Anthony PERARD --- 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 List host NUMA topology information +=item B<-x>, B<--xenstore> + +Show Xenstore features available. + =back =item B 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 command in dom0. +via the B 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; }