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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.