aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/man/xl.pod.14
-rw-r--r--tools/libxl/xl_cmdimpl.c19
-rw-r--r--tools/libxl/xl_cmdtable.c3
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<create> subcommand.
Send <config> instead of config file from creation.
+=item B<--debug>
+
+Print huge (!) amount of debug during the migration process.
+
=back
=item B<remus> [I<OPTIONS>] I<domain-id> I<host>
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 <host> instead of ssh <host> xl\n"
" migrate-receive [-d -e]\n"
"-e Do not wait in the background (on <host>) 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,