[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xl: Introduce shutdown xm compatibility option -a to shutdown all domains
Thursday, September 6, 2012, 11:27:08 AM, you wrote: > On Thu, 2012-09-06 at 11:07 +0100, Sander Eikelenboom wrote: >> 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> > Thanks Sander, however I'm afraid this comes too late for 4.2.0 (it was > always going to be tight). We should take it for 4.2.1 though. Ok, although init.d/xendomains in combination with the default sysconfig-xendomains scripts use this (needs another patch to use the short -a instead of --all Will respin with the changes below ! >> 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>] > Perhaps write this as "I<-a|domain-id>" to make it clear one or the > other is needed? >> 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; > return -1 here, main_shutdown_out reurns 0 AKA success. >> + } >> + >> + 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); >> + } > Can you make shutdown_domain take a domid instead, which avoids the > needless libxl_domid_to_name->libxl_name_to_domid laundering in the -a > case. > Otherwise the patch looks good, thanks! > Thanks, > Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |