mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xl/libxtl: Remove glitch in xl migrate log output
* Provide a new XTL_STDIOSTREAM_HIDE_PROGRESS flag in the stdio logger * Provide a way to adjust the flags after logger setup * Use these to disable progress output from the migration receiver, as the sender is also sending progress information. Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
This commit is contained in:
1 parent
a2b5973ee0
commit
455a17fea9
3 files changed
+31
-3
No files matched your search
@@ -51,8 +51,9 @@ struct xentoollog_logger {
|
||||
|
||||
/*---------- facilities for consuming log messages ----------*/
|
||||
|
||||
#define XTL_STDIOSTREAM_SHOW_PID 01u
|
||||
#define XTL_STDIOSTREAM_SHOW_DATE 02u
|
||||
#define XTL_STDIOSTREAM_SHOW_PID 01u
|
||||
#define XTL_STDIOSTREAM_SHOW_DATE 02u
|
||||
#define XTL_STDIOSTREAM_HIDE_PROGRESS 04u
|
||||
|
||||
typedef struct xentoollog_logger_stdiostream xentoollog_logger_stdiostream;
|
||||
|
||||
@@ -61,6 +62,12 @@ xentoollog_logger_stdiostream *xtl_createlogger_stdiostream
|
||||
/* may return 0 if malloc fails, in which case error was logged */
|
||||
/* destroy on this logger does not close the file */
|
||||
|
||||
void xtl_stdiostream_set_minlevel(xentoollog_logger_stdiostream*,
|
||||
xentoollog_level min_level);
|
||||
void xtl_stdiostream_adjust_flags(xentoollog_logger_stdiostream*,
|
||||
unsigned set_flags, unsigned clear_flags);
|
||||
/* if set_flags and clear_flags overlap, set_flags takes precedence */
|
||||
|
||||
void xtl_logger_destroy(struct xentoollog_logger *logger /* 0 is ok */);
|
||||
|
||||
|
||||
|
||||
@@ -75,6 +75,9 @@ static void stdiostream_progress(struct xentoollog_logger *logger_in,
|
||||
int newpel, extra_erase;
|
||||
xentoollog_level this_level;
|
||||
|
||||
if (!(lg->flags & XTL_STDIOSTREAM_HIDE_PROGRESS))
|
||||
return;
|
||||
|
||||
if (percent < lg->progress_last_percent) {
|
||||
this_level = XTL_PROGRESS;
|
||||
} else if (percent == lg->progress_last_percent) {
|
||||
@@ -108,6 +111,18 @@ static void stdiostream_destroy(struct xentoollog_logger *logger_in) {
|
||||
free(lg);
|
||||
}
|
||||
|
||||
void xtl_stdiostream_set_minlevel(xentoollog_logger_stdiostream *lg,
|
||||
xentoollog_level min_level) {
|
||||
lg->min_level = min_level;
|
||||
}
|
||||
|
||||
void xtl_stdiostream_adjust_flags(xentoollog_logger_stdiostream *lg,
|
||||
unsigned set_flags, unsigned clear_flags) {
|
||||
unsigned new_flags = (lg->flags & ~clear_flags) | set_flags;
|
||||
if (new_flags & XTL_STDIOSTREAM_HIDE_PROGRESS)
|
||||
progress_erase(lg);
|
||||
lg->flags = new_flags;
|
||||
}
|
||||
|
||||
xentoollog_logger_stdiostream *xtl_createlogger_stdiostream
|
||||
(FILE *f, xentoollog_level min_level, unsigned flags) {
|
||||
|
||||
@@ -1923,6 +1923,8 @@ static void migrate_domain(char *domain_spec, const char *rune,
|
||||
save_domain_core_writeconfig(send_fd, "migration stream",
|
||||
config_data, config_len);
|
||||
|
||||
xtl_stdiostream_adjust_flags(logger, XTL_STDIOSTREAM_HIDE_PROGRESS, 0);
|
||||
|
||||
memset(&suspinfo, 0, sizeof(suspinfo));
|
||||
suspinfo.flags |= XL_SUSPEND_LIVE;
|
||||
rc = libxl_domain_suspend(&ctx, &suspinfo, domid, send_fd);
|
||||
@@ -1932,13 +1934,17 @@ static void migrate_domain(char *domain_spec, const char *rune,
|
||||
goto failed_resume;
|
||||
}
|
||||
|
||||
fprintf(stderr, "migration sender: Transfer complete.\n");
|
||||
//fprintf(stderr, "migration sender: Transfer complete.\n");
|
||||
// Should only be printed when debugging as it's a bit messy with
|
||||
// progress indication.
|
||||
|
||||
rc = migrate_read_fixedmessage(recv_fd, migrate_receiver_ready,
|
||||
sizeof(migrate_receiver_ready),
|
||||
"ready message", rune);
|
||||
if (rc) goto failed_resume;
|
||||
|
||||
xtl_stdiostream_adjust_flags(logger, 0, XTL_STDIOSTREAM_HIDE_PROGRESS);
|
||||
|
||||
/* right, at this point we are about give the destination
|
||||
* permission to rename and resume, so we must first rename the
|
||||
* domain away ourselves */
|
||||
|
||||