|
[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
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.
> 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 |