[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.