|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xl: suppress suspend/resume functions on platforms which do not support it.
Typoed George's address...
On Wed, 2014-02-12 at 14:27 +0000, Ian Campbell wrote:
> ARM does not (currently) support migration, so stop offering tasty looking
> treats like "xl migrate".
>
> Apart from the UI improvement my intention is to use this in osstest to detect
> whether to attempt the save/restore/migrate tests.
>
> Other than the additions of the #define/#ifdef there is a tiny bit of code
> motion ("dump-core" in the command list and core_dump_domain in the
> implementations) which serves to put ifdeffable bits next to each other.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: goerge.dunlap@xxxxxxxxxx
> ---
> Release:
> My main motivation here is to be able to get a complete osstest run on
> armhf
> prior to Xen 4.4 and the lack of migration support is currently blocking
> that (fine) but is also blocking subsequent useful tests. This change will
> allow me to make osstest skip the unsupported functionality, and in a way
> where
> it will automatically start trying to test it as soon as it is implemented.
> ---
> tools/libxl/libxl.h | 14 ++++++++++++++
> tools/libxl/xl.h | 4 ++++
> tools/libxl/xl_cmdimpl.c | 20 ++++++++++++--------
> tools/libxl/xl_cmdtable.c | 15 +++++++++------
> 4 files changed, 39 insertions(+), 14 deletions(-)
>
> diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
> index 0b992d1..06bbca6 100644
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -431,6 +431,20 @@
> */
> #define LIBXL_HAVE_SIGCHLD_SHARING 1
>
> +/*
> + * LIBXL_HAVE_NO_SUSPEND_RESUME
> + *
> + * Is this is defined then the platform has no support for saving,
> + * restoring or migrating a domain. In this case the related functions
> + * should be expected to return failure. That is:
> + * - libxl_domain_suspend
> + * - libxl_domain_resume
> + * - libxl_domain_remus_start
> + */
> +#if defined(__arm__) || defined(__aarch64__)
> +#define LIBXL_HAVE_NO_SUSPEND_RESUME 1
> +#endif
> +
> /* Functions annotated with LIBXL_EXTERNAL_CALLERS_ONLY may not be
> * called from within libxl itself. Callers outside libxl, who
> * do not #include libxl_internal.h, are fine. */
> diff --git a/tools/libxl/xl.h b/tools/libxl/xl.h
> index c876a33..f188708 100644
> --- a/tools/libxl/xl.h
> +++ b/tools/libxl/xl.h
> @@ -43,10 +43,12 @@ int main_pciattach(int argc, char **argv);
> int main_pciassignable_add(int argc, char **argv);
> int main_pciassignable_remove(int argc, char **argv);
> int main_pciassignable_list(int argc, char **argv);
> +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME
> int main_restore(int argc, char **argv);
> int main_migrate_receive(int argc, char **argv);
> int main_save(int argc, char **argv);
> int main_migrate(int argc, char **argv);
> +#endif
> int main_dump_core(int argc, char **argv);
> int main_pause(int argc, char **argv);
> int main_unpause(int argc, char **argv);
> @@ -104,7 +106,9 @@ int main_cpupoolnumasplit(int argc, char **argv);
> int main_getenforce(int argc, char **argv);
> int main_setenforce(int argc, char **argv);
> int main_loadpolicy(int argc, char **argv);
> +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME
> int main_remus(int argc, char **argv);
> +#endif
> int main_devd(int argc, char **argv);
>
> void help(const char *command);
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index aff6f90..4fc46eb 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -3384,6 +3384,15 @@ static void list_vm(void)
> libxl_vminfo_list_free(info, nb_vm);
> }
>
> +static void core_dump_domain(uint32_t domid, const char *filename)
> +{
> + int rc;
> +
> + rc=libxl_domain_core_dump(ctx, domid, filename, NULL);
> + if (rc) { fprintf(stderr,"core dump failed (rc=%d)\n",rc);exit(-1); }
> +}
> +
> +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME
> static void save_domain_core_begin(uint32_t domid,
> const char *override_config_file,
> uint8_t **config_data_r,
> @@ -3775,14 +3784,6 @@ static void migrate_domain(uint32_t domid, const char
> *rune, int debug,
> exit(-ERROR_BADFAIL);
> }
>
> -static void core_dump_domain(uint32_t domid, const char *filename)
> -{
> - int rc;
> -
> - rc=libxl_domain_core_dump(ctx, domid, filename, NULL);
> - if (rc) { fprintf(stderr,"core dump failed (rc=%d)\n",rc);exit(-1); }
> -}
> -
> static void migrate_receive(int debug, int daemonize, int monitor,
> int send_fd, int recv_fd, int remus)
> {
> @@ -4102,6 +4103,7 @@ int main_migrate(int argc, char **argv)
> migrate_domain(domid, rune, debug, config_filename);
> return 0;
> }
> +#endif
>
> int main_dump_core(int argc, char **argv)
> {
> @@ -7248,6 +7250,7 @@ done:
> return ret;
> }
>
> +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME
> int main_remus(int argc, char **argv)
> {
> uint32_t domid;
> @@ -7341,6 +7344,7 @@ int main_remus(int argc, char **argv)
> close(send_fd);
> return -ERROR_FAIL;
> }
> +#endif
>
> int main_devd(int argc, char **argv)
> {
> diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
> index ebe0220..e8ab93a 100644
> --- a/tools/libxl/xl_cmdtable.c
> +++ b/tools/libxl/xl_cmdtable.c
> @@ -137,6 +137,7 @@ struct cmd_spec cmd_table[] = {
> " -autopass\n"
> "--vncviewer-autopass (consistency alias for --autopass)"
> },
> +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME
> { "save",
> &main_save, 0, 1,
> "Save a domain state to restore later",
> @@ -158,11 +159,6 @@ struct cmd_spec cmd_table[] = {
> " of the domain.\n"
> "--debug Print huge (!) amount of debug during the migration
> process."
> },
> - { "dump-core",
> - &main_dump_core, 0, 1,
> - "Core dump a domain",
> - "<Domain> <filename>"
> - },
> { "restore",
> &main_restore, 0, 1,
> "Restore a domain from a saved state",
> @@ -179,6 +175,12 @@ struct cmd_spec cmd_table[] = {
> "Restore a domain from a saved state",
> "- for internal use only",
> },
> +#endif
> + { "dump-core",
> + &main_dump_core, 0, 1,
> + "Core dump a domain",
> + "<Domain> <filename>"
> + },
> { "cd-insert",
> &main_cd_insert, 1, 1,
> "Insert a cdrom into a guest's cd drive",
> @@ -474,6 +476,7 @@ struct cmd_spec cmd_table[] = {
> "Loads a new policy int the Flask Xen security module",
> "<policy file>",
> },
> +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME
> { "remus",
> &main_remus, 0, 1,
> "Enable Remus HA for domain",
> @@ -486,8 +489,8 @@ struct cmd_spec cmd_table[] = {
> " ssh <host> xl migrate-receive -r [-e]\n"
> "-e Do not wait in the background (on <host>) for
> the death\n"
> " of the domain."
> -
> },
> +#endif
> { "devd",
> &main_devd, 0, 1,
> "Daemon that listens for devices and launches backends",
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |