]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
log: fix stderr handling on Windows 50777/head
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Tue, 6 Dec 2022 08:35:36 +0000 (10:35 +0200)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 5 Apr 2023 15:32:20 +0000 (11:32 -0400)
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 <lpetrut@cloudbasesolutions.com>
(cherry picked from commit b7a7debb87a3da3af2f67dae02f56f3de26d11a9)

src/log/Log.cc

index b6ce72beb830f804605c4ad03aca357983b121d7..0a16d6fa69fc1923c6bf07fd5644b31ce5a7a38e 100644 (file)
@@ -70,6 +70,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;
@@ -80,6 +81,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) {
@@ -96,6 +99,7 @@ void Log::_configure_stderr()
     }
     do_stderr_poll = true;
   }
+#endif // !_WIN32
 }