From 86baa64d950d36bf8abc051aab660f79e8632819 Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Fri, 15 Feb 2013 13:32:15 +0000 Subject: libxl: pass debug flag down to libxl_domain_suspend libxl_domain_suspend is already prepared to handle LIBXL_SUSPEND_DEBUG, and xl migrate handles the -d switch as well. Pass this flag down to libxl_domain_suspend, so that finally xc_domain_save can dump huge amount of debug data to stdout. Update xl.1 and help text output. Signed-off-by: Olaf Hering Acked-by: Ian Campbell Committed-by: Ian Campbell --- docs/man/xl.pod.1 | 4 ++++ tools/libxl/xl_cmdimpl.c | 19 +++++++++++++------ tools/libxl/xl_cmdtable.c | 3 ++- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 index 097fe4398f..a0e298eb28 100644 --- a/docs/man/xl.pod.1 +++ b/docs/man/xl.pod.1 @@ -387,6 +387,10 @@ domain. See the corresponding option of the I subcommand. Send instead of config file from creation. +=item B<--debug> + +Print huge (!) amount of debug during the migration process. + =back =item B [I] I I diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 080bbd885a..bdd1865bf6 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -3331,7 +3331,7 @@ static void migrate_do_preamble(int send_fd, int recv_fd, pid_t child, } -static void migrate_domain(uint32_t domid, const char *rune, +static void migrate_domain(uint32_t domid, const char *rune, int debug, const char *override_config_file) { pid_t child = -1; @@ -3340,7 +3340,7 @@ static void migrate_domain(uint32_t domid, const char *rune, char *away_domname; char rc_buf; uint8_t *config_data; - int config_len; + int config_len, flags = LIBXL_SUSPEND_LIVE; save_domain_core_begin(domid, override_config_file, &config_data, &config_len); @@ -3358,7 +3358,9 @@ static void migrate_domain(uint32_t domid, const char *rune, xtl_stdiostream_adjust_flags(logger, XTL_STDIOSTREAM_HIDE_PROGRESS, 0); - rc = libxl_domain_suspend(ctx, domid, send_fd, LIBXL_SUSPEND_LIVE, NULL); + if (debug) + flags |= LIBXL_SUSPEND_DEBUG; + rc = libxl_domain_suspend(ctx, domid, send_fd, flags, NULL); if (rc) { fprintf(stderr, "migration sender: libxl_domain_suspend failed" " (rc=%d)\n", rc); @@ -3751,8 +3753,13 @@ int main_migrate(int argc, char **argv) char *rune = NULL; char *host; int opt, daemonize = 1, monitor = 1, debug = 0; + static struct option opts[] = { + {"debug", 0, 0, 0x100}, + COMMON_LONG_OPTS, + {0, 0, 0, 0} + }; - SWITCH_FOREACH_OPT(opt, "FC:s:ed", NULL, "migrate", 2) { + SWITCH_FOREACH_OPT(opt, "FC:s:e", opts, "migrate", 2) { case 'C': config_filename = optarg; break; @@ -3766,7 +3773,7 @@ int main_migrate(int argc, char **argv) daemonize = 0; monitor = 0; break; - case 'd': + case 0x100: debug = 1; break; } @@ -3784,7 +3791,7 @@ int main_migrate(int argc, char **argv) return 1; } - migrate_domain(domid, rune, config_filename); + migrate_domain(domid, rune, debug, config_filename); return 0; } diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index 0f0634fd07..b4a87ca137 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -153,7 +153,8 @@ struct cmd_spec cmd_table[] = { " to sh. If empty, run instead of ssh xl\n" " migrate-receive [-d -e]\n" "-e Do not wait in the background (on ) for the death\n" - " of the domain." + " of the domain.\n" + "--debug Print huge (!) amount of debug during the migration process." }, { "dump-core", &main_dump_core, 0, 1, -- cgit v1.2.3