xl: migration: pass -t to xl migrate-receive
authorIan Jackson <ian.jackson@eu.citrix.com>
Tue, 7 Jan 2014 18:23:04 +0000 (18:23 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Wed, 19 Mar 2014 13:42:13 +0000 (13:42 +0000)
If we ourselves are using cr-based overwriting for logging to stderr,
pass -t to the migration receiver so that it knows to do the same
(since its stderr is normally the pipe from sshd).

This requires, of course, that the receiver support that option.  This
is OK from a compatibility point of view because we support migration
to newer, but not necessarily to older, versions.  (If unsupported
backwards migration is still desired the use of -s "" allows the
remote invocation rune to be overridden by a command of one's choice.)

This fixes a regression introduced in 2f80ac9c0e8f, where migration
messages from the receiver would not use of the overwriting protocol.

CC: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
tools/libxl/xl_cmdimpl.c

index 6b1ebfaf73fdc17fbf9ae2279964e8a37c0943b0..d52b933c51d1f6ce35bbc7ec3bd4d6a1b3743a7a 100644 (file)
@@ -4110,11 +4110,14 @@ int main_migrate(int argc, char **argv)
     domid = find_domain(argv[optind]);
     host = argv[optind + 1];
 
+    bool pass_tty_arg = progress_use_cr || (isatty(2) > 0);
+
     if (!ssh_command[0]) {
         rune= host;
     } else {
-        if (asprintf(&rune, "exec %s %s xl migrate-receive%s%s",
+        if (asprintf(&rune, "exec %s %s xl%s migrate-receive%s%s",
                      ssh_command, host,
+                     pass_tty_arg ? " -t" : "",
                      daemonize ? "" : " -e",
                      debug ? " -d" : "") < 0)
             return 1;