|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl: Introduce shutdown xm compatibility option -a to shutdown all domains
docs/man/xl.pod.1 | 6 +++++-
tools/libxl/xl_cmdimpl.c | 39 ++++++++++++++++++++++++++++++++++++---
tools/libxl/xl_cmdtable.c | 3 ++-
3 files changed, 43 insertions(+), 5 deletions(-)
xl: Introduce shutdown xm compatibility option -a to shutdown all domains
Signed-off-by: Sander Eikelenboom <linux@xxxxxxxxxxxxxx>
diff -r 9dc729b75595 -r 67f9ef649937 docs/man/xl.pod.1
--- a/docs/man/xl.pod.1 Mon Sep 03 11:22:02 2012 +0100
+++ b/docs/man/xl.pod.1 Thu Sep 06 12:04:12 2012 +0200
@@ -527,7 +527,7 @@ List specifically for that domain. Other
=back
-=item B<shutdown> [I<OPTIONS>] I<domain-id>
+=item B<shutdown> [I<OPTIONS>] [I<domain-id>]
Gracefully shuts down a domain. This coordinates with the domain OS
to perform graceful shutdown, so there is no guarantee that it will
@@ -550,6 +550,10 @@ B<OPTIONS>
=over 4
+=item B<-a>
+
+-a Shutdown all domains. Often used when doing a complete shutdown of a Xen
system.
+
=item B<-w>
Wait for the domain to complete shutdown before returning.
diff -r 9dc729b75595 -r 67f9ef649937 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Mon Sep 03 11:22:02 2012 +0100
+++ b/tools/libxl/xl_cmdimpl.c Thu Sep 06 12:04:12 2012 +0200
@@ -3670,14 +3670,20 @@ int main_destroy(int argc, char **argv)
int main_shutdown(int argc, char **argv)
{
- int opt;
+ libxl_dominfo *dominfo;
+ char *domname;
+ int opt, i, nb_domain;
+ int all = 0;
int wait = 0;
int fallback_trigger = 0;
- while ((opt = def_getopt(argc, argv, "wF", "shutdown", 1)) != -1) {
+ while ((opt = def_getopt(argc, argv, "awF", "shutdown", 0)) != -1) {
switch (opt) {
case 0: case 2:
return opt;
+ case 'a':
+ all = 1;
+ break;
case 'w':
wait = 1;
break;
@@ -3687,7 +3693,34 @@ int main_shutdown(int argc, char **argv)
}
}
- shutdown_domain(argv[optind], wait, fallback_trigger);
+ if (!argv[optind] && !all) {
+ fprintf(stderr, "You must specify -a or a domain id.\n\n");
+ return opt;
+ }
+
+ if (all) {
+ if (!(dominfo = libxl_list_domain(ctx, &nb_domain))) {
+ fprintf(stderr, "libxl_list_domain failed.\n");
+ goto main_shutdown_out;
+ }
+
+ for (i = 0; i<nb_domain; i++) {
+ if (dominfo[i].domid == 0)
+ continue;
+
+ domname = libxl_domid_to_name(ctx, dominfo[i].domid);
+ if (domname)
+ shutdown_domain(domname, wait, fallback_trigger);
+
+ free(domname);
+ }
+
+ libxl_dominfo_list_free(dominfo, nb_domain);
+ } else {
+ shutdown_domain(argv[optind], wait, fallback_trigger);
+ }
+
+main_shutdown_out:
return 0;
}
diff -r 9dc729b75595 -r 67f9ef649937 tools/libxl/xl_cmdtable.c
--- a/tools/libxl/xl_cmdtable.c Mon Sep 03 11:22:02 2012 +0100
+++ b/tools/libxl/xl_cmdtable.c Thu Sep 06 12:04:12 2012 +0200
@@ -60,7 +60,8 @@ struct cmd_spec cmd_table[] = {
{ "shutdown",
&main_shutdown, 0, 1,
"Issue a shutdown signal to a domain",
- "[options] <Domain>",
+ "[options] [Domain]",
+ "-a Shutdown all domains.\n"
"-h Print this help.\n"
"-F Fallback to ACPI power event for HVM guests
with\n"
" no PV drivers.\n"
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |