From: Gihan Munasinghe <GMunasinghe@flexiant.com>
To: Keir Fraser <keir.fraser@eu.citrix.com>
Cc: Xen Devel <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] new commands "xl reboot" & "xl shutdown"
Date: Tue, 01 Jun 2010 23:51:08 +0100 [thread overview]
Message-ID: <4C058EDC.2030209@flexiant.com> (raw)
In-Reply-To: <C82A6297.16584%keir.fraser@eu.citrix.com>
[-- Attachment #1: Type: text/plain, Size: 442 bytes --]
> This is still against a very old version of xen-unstable.
>
> In your repo do:
> hg pull -u http://xenbits.xensource.com/staging/xen-unstable.hg
>
> Then re-base your patch to that.
>
> -- Keir
>
>
>
>
>
Hi
Re did the patch for the latest unstable release see attached
xl: adds shutdown and reboot commands
libxl : remote shutdown to work for pure hvm domains
Signed-off-by: Gihan Munasinghe <GMunasinghe@flexiant.com>
Thanks
Gihan
[-- Attachment #2: xen4-libxl-shutdown-reboot-xenunstable.patch --]
[-- Type: text/plain, Size: 4168 bytes --]
diff -Nuar a/tools/libxl/libxl.c b/tools/libxl/libxl.c
--- a/tools/libxl/libxl.c 2010-06-01 23:32:43.000000000 +0100
+++ b/tools/libxl/libxl.c 2010-06-01 23:42:32.000000000 +0100
@@ -550,12 +550,12 @@
shutdown_path = libxl_sprintf(ctx, "%s/control/shutdown", dom_path);
xs_write(ctx->xsh, XBT_NULL, shutdown_path, req_table[req], strlen(req_table[req]));
- if (/* hvm */ 0) {
+ if (is_hvm(ctx,domid)) {
unsigned long acpi_s_state = 0;
unsigned long pvdriver = 0;
xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_ACPI_S_STATE, &acpi_s_state);
xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_CALLBACK_IRQ, &pvdriver);
- if (!pvdriver && acpi_s_state != 0)
+ if (!pvdriver || acpi_s_state != 0)
xc_domain_shutdown(ctx->xch, domid, req);
}
return 0;
diff -Nuar a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c 2010-06-01 23:32:43.000000000 +0100
+++ b/tools/libxl/xl_cmdimpl.c 2010-06-01 23:42:32.000000000 +0100
@@ -1160,6 +1160,7 @@
free(w1);
free(w2);
LOG("Done. Rebooting now");
+ sleep(2);/*Fix Me: If this sleep is not there the domain creation failes sometimes*/
goto start;
}
LOG("Done. Exiting now");
@@ -1623,6 +1624,22 @@
if (rc) { fprintf(stderr,"destroy failed (rc=%d)\n.",rc); exit(-1); }
}
+void shutdown_domain(char *p)
+{
+ int rc;
+ find_domain(p);
+ rc=libxl_domain_shutdown(&ctx, domid, 0);
+ if (rc) { fprintf(stderr,"shutdown failed (rc=%d)\n.",rc);exit(-1); }
+}
+
+void reboot_domain(char *p)
+{
+ int rc;
+ find_domain(p);
+ rc=libxl_domain_shutdown(&ctx, domid, 1);
+ if (rc) { fprintf(stderr,"reboot failed (rc=%d)\n.",rc);exit(-1); }
+}
+
void list_domains(int verbose)
{
struct libxl_dominfo *info;
@@ -2375,6 +2392,57 @@
exit(0);
}
+int main_shutdown(int argc, char **argv)
+{
+ int opt;
+ char *p;
+
+ while ((opt = getopt(argc, argv, "h")) != -1) {
+ switch (opt) {
+ case 'h':
+ help("shutdown");
+ exit(0);
+ default:
+ fprintf(stderr, "option not supported\n");
+ break;
+ }
+ }
+ if (optind >= argc) {
+ help("shutdown");
+ exit(2);
+ }
+
+ p = argv[optind];
+
+ shutdown_domain(p);
+ exit(0);
+}
+
+int main_reboot(int argc, char **argv)
+{
+ int opt;
+ char *p;
+
+ while ((opt = getopt(argc, argv, "h")) != -1) {
+ switch (opt) {
+ case 'h':
+ help("reboot");
+ exit(0);
+ default:
+ fprintf(stderr, "option not supported\n");
+ break;
+ }
+ }
+ if (optind >= argc) {
+ help("reboot");
+ exit(2);
+ }
+
+ p = argv[optind];
+
+ reboot_domain(p);
+ exit(0);
+}
int main_list(int argc, char **argv)
{
int opt, verbose = 0;
diff -Nuar a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
--- a/tools/libxl/xl_cmdtable.c 2010-06-01 23:32:43.000000000 +0100
+++ b/tools/libxl/xl_cmdtable.c 2010-06-01 23:42:32.000000000 +0100
@@ -35,6 +35,16 @@
"Terminate a domain immediately",
"<Domain>",
},
+ { "shutdown",
+ &main_shutdown,
+ "Issue a shutdown signal to a domain",
+ "<Domain>",
+ },
+ { "reboot",
+ &main_reboot,
+ "Issue a reboot signal to a domain",
+ "<Domain>",
+ },
{ "pci-attach",
&main_pciattach,
"Insert a new pass-through pci device",
diff -Nuar a/tools/libxl/xl.h b/tools/libxl/xl.h
--- a/tools/libxl/xl.h 2010-06-01 23:32:43.000000000 +0100
+++ b/tools/libxl/xl.h 2010-06-01 23:42:32.000000000 +0100
@@ -40,6 +40,8 @@
int main_pause(int argc, char **argv);
int main_unpause(int argc, char **argv);
int main_destroy(int argc, char **argv);
+int main_shutdown(int argc, char **argv);
+int main_reboot(int argc, char **argv);
int main_list(int argc, char **argv);
int main_list_vm(int argc, char **argv);
int main_create(int argc, char **argv);
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
prev parent reply other threads:[~2010-06-01 22:51 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-07 23:36 [PATCH] new commands "xl reboot" & "xl shutdown" Gihan Munasinghe
2010-05-10 15:11 ` Stefano Stabellini
2010-05-11 6:51 ` Gihan Munasinghe
2010-05-12 15:57 ` Gihan Munasinghe
2010-05-12 16:34 ` Vincent Hanquez
2010-05-12 17:09 ` Gihan Munasinghe
2010-05-13 7:41 ` Keir Fraser
2010-05-31 19:03 ` Gihan Munasinghe
2010-06-01 6:09 ` Keir Fraser
2010-06-01 22:51 ` Gihan Munasinghe [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C058EDC.2030209@flexiant.com \
--to=gmunasinghe@flexiant.com \
--cc=keir.fraser@eu.citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).