[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl: report failure to reboot/shutdown due to lackof PV interfaces to caller
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1324464450 0 # Node ID 492914c658383e071bef2f907cb62ede69ba48a4 # Parent 1c3f9cac204ee78e725f2710ceaf42cb07c72b8a libxl: report failure to reboot/shutdown due to lackof PV interfaces to caller This allow the caller to react as they think is appropriate. xl now prints a message much like the library did previously, although hopefully somewhat more informative. Update the xl(1) man page to be similarly more informative. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson.citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> --- diff -r 1c3f9cac204e -r 492914c65838 docs/man/xl.pod.1 --- a/docs/man/xl.pod.1 Wed Dec 21 10:47:11 2011 +0000 +++ b/docs/man/xl.pod.1 Wed Dec 21 10:47:30 2011 +0000 @@ -360,7 +360,11 @@ command run from the console. The command returns as soon as it has executed the reboot action, which may be significantly before the domain actually reboots. -It requires PV drivers installed in your guest OS. + +For HVM domains this requires PV drivers to be installed in your guest +OS. If PV drivers are not present but you have configured the guest OS +to behave appropriately you may be able to use the I<button-press> +subcommand to trigger a power button press. The behavior of what happens to a domain when it reboots is set by the B<on_reboot> parameter of the domain configuration file when the @@ -412,9 +416,15 @@ Gracefully shuts down a domain. This coordinates with the domain OS to perform graceful shutdown, so there is no guarantee that it will succeed, and may take a variable length of time depending on what -services must be shutdown in the domain. The command returns -immediately after signally the domain unless that B<-w> flag is used. -For HVM domains it requires PV drivers to be installed in your guest OS. +services must be shutdown in the domain. + +For HVM domains this requires PV drivers to be installed in your guest +OS. If PV drivers are not present but you have configured the guest OS +to behave appropriately you may be able to use the I<button-press> +subcommand to trigger a power button press. + +The command returns immediately after signally the domain unless that +B<-w> flag is used. The behavior of what happens to a domain when it reboots is set by the B<on_shutdown> parameter of the domain configuration file when the diff -r 1c3f9cac204e -r 492914c65838 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Wed Dec 21 10:47:11 2011 +0000 +++ b/tools/libxl/libxl.c Wed Dec 21 10:47:30 2011 +0000 @@ -603,11 +603,8 @@ if (ret < 0) return ret; - if (!ret) { - LIBXL__LOG(CTX, LIBXL__LOG_ERROR, - "PV control interface not available\n"); - return ERROR_FAIL; - } + if (!ret) + return ERROR_NOPARAVIRT; return libxl__domain_pvcontrol_write(gc, XBT_NULL, domid, cmd); } diff -r 1c3f9cac204e -r 492914c65838 tools/libxl/libxl.h --- a/tools/libxl/libxl.h Wed Dec 21 10:47:11 2011 +0000 +++ b/tools/libxl/libxl.h Wed Dec 21 10:47:30 2011 +0000 @@ -222,6 +222,7 @@ ERROR_BADFAIL = -7, ERROR_GUEST_TIMEDOUT = -8, ERROR_TIMEDOUT = -9, + ERROR_NOPARAVIRT = -10, }; #define LIBXL_VERSION 0 diff -r 1c3f9cac204e -r 492914c65838 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Wed Dec 21 10:47:11 2011 +0000 +++ b/tools/libxl/xl_cmdimpl.c Wed Dec 21 10:47:30 2011 +0000 @@ -2266,7 +2266,15 @@ find_domain(p); rc=libxl_domain_shutdown(ctx, domid); - if (rc) { fprintf(stderr,"shutdown failed (rc=%d)\n",rc);exit(-1); } + if (rc) { + if (rc == ERROR_NOPARAVIRT) { + fprintf(stderr, "PV control interface not available:" + " external graceful shutdown not possible.\n"); + fprintf(stderr, "Use \"xl button-press <dom> power\" or" + " \"xl destroy <dom>\".\n"); + } + fprintf(stderr,"shutdown failed (rc=%d)\n",rc);exit(-1); + } if (wait) { libxl_waiter waiter; @@ -2308,7 +2316,14 @@ int rc; find_domain(p); rc=libxl_domain_reboot(ctx, domid); - if (rc) { fprintf(stderr,"reboot failed (rc=%d)\n",rc);exit(-1); } + if (rc) { + if (rc == ERROR_NOPARAVIRT) { + fprintf(stderr, "PV control interface not available:" + " external graceful reboot not possible.\n"); + fprintf(stderr, "Use \"xl button-press <dom> power\" or" + " \"xl destroy <dom>\".\n"); + } + fprintf(stderr,"reboot failed (rc=%d)\n",rc);exit(-1); } } static void list_domains_details(const libxl_dominfo *info, int nb_domain) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |