diff --git a/src/lxc/log.c b/src/lxc/log.c index dafda1b95..388f91ba0 100644 --- a/src/lxc/log.c +++ b/src/lxc/log.c @@ -290,7 +290,8 @@ static int log_append_logfile(const struct lxc_log_appender *appender, { char buffer[LXC_LOG_BUFFER_SIZE]; char date_time[LXC_LOG_TIME_SIZE]; - int n, ret; + int n; + ssize_t ret; int fd_to_use = -1; const char *log_container_name = log_vmname; @@ -340,7 +341,12 @@ static int log_append_logfile(const struct lxc_log_appender *appender, buffer[n] = '\n'; - return write(fd_to_use, buffer, n + 1); +again: + ret = write(fd_to_use, buffer, n + 1); + if (ret < 0 && errno == EINTR) + goto again; + + return ret; } static struct lxc_log_appender log_appender_syslog = {