From: Lucian Petrut Date: Tue, 6 Dec 2022 08:35:36 +0000 (+0200) Subject: log: fix stderr handling on Windows X-Git-Tag: v18.1.0~683^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b7a7debb87a3da3af2f67dae02f56f3de26d11a9;p=ceph.git log: fix stderr handling on Windows A recent commit configured stderr to use non-blocking IO in order to avoid partial writes with container runtimes. This broke the Windows build: ceph/src/log/Log.cc:85:36: error: 'F_GETFL' was not declared in this scope 85 | int flags = fcntl(m_fd_stderr, F_GETFL); | ^~~~~~~ ceph/src/log/Log.cc:85:17: error: 'fcntl' was not declared in this scope 85 | int flags = fcntl(m_fd_stderr, F_GETFL); | ^~~~~ ceph/src/log/Log.cc:90:19: error: 'O_NONBLOCK' was not declared in this scope 90 | if (!(flags & O_NONBLOCK)) { | ^~~~~~~~~~ ceph/src/log/Log.cc:92:34: error: 'F_SETFL' was not declared in this scope 92 | flags = fcntl(m_fd_stderr, F_SETFL, flags); We're going to skip this since we don't actually need to use non-blocking IO with stderr on Windows. Fixes: 2551130bcc12c55ddaa879b4f5b77c81890b51b2 Signed-off-by: Lucian Petrut --- diff --git a/src/log/Log.cc b/src/log/Log.cc index 967bcd5dcb7b..69f6df82ecbb 100644 --- a/src/log/Log.cc +++ b/src/log/Log.cc @@ -71,6 +71,7 @@ Log::~Log() void Log::_configure_stderr() { +#ifndef _WIN32 struct stat info; if (int rc = fstat(m_fd_stderr, &info); rc == -1) { std::cerr << "failed to stat stderr: " << cpp_strerror(errno) << std::endl; @@ -81,6 +82,8 @@ void Log::_configure_stderr() /* Set O_NONBLOCK on FIFO stderr file. We want to ensure atomic debug log * writes so they do not get partially read by e.g. buggy container * runtimes. See also IEEE Std 1003.1-2017 and Log::_log_stderr below. + * + * This isn't required on Windows. */ int flags = fcntl(m_fd_stderr, F_GETFL); if (flags == -1) { @@ -97,6 +100,7 @@ void Log::_configure_stderr() } do_stderr_poll = true; } +#endif // !_WIN32 }