nspawn: assume stdout is always writable if it does not support epoll
stdout can be redirected to a regular file. Regular files don't support epoll. nspawn failed with: "Failed to register fds in epoll: Operation not permitted". If stdout does not support epoll, assume it's always writable.
This commit is contained in:
parent
e45460d666
commit
f2956e80c9
|
@ -885,8 +885,17 @@ static int process_pty(int master, pid_t pid, sigset_t *mask) {
|
|||
signal_ev.events = EPOLLIN;
|
||||
signal_ev.data.fd = signal_fd;
|
||||
|
||||
if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0 ||
|
||||
epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 ||
|
||||
if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0) {
|
||||
if (errno != EPERM) {
|
||||
log_error("Failed to register stdout in epoll: %m");
|
||||
r = -errno;
|
||||
goto finish;
|
||||
}
|
||||
/* stdout without epoll support. Likely redirected to regular file. */
|
||||
stdout_writable = true;
|
||||
}
|
||||
|
||||
if (epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 ||
|
||||
epoll_ctl(ep, EPOLL_CTL_ADD, signal_fd, &signal_ev) < 0) {
|
||||
log_error("Failed to register fds in epoll: %m");
|
||||
r = -errno;
|
||||
|
|
Loading…
Reference in a new issue