]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: fd: Use a separate lock for logs instead of abusing the fd lock.
authorOlivier Houchard <ohouchard@haproxy.com>
Thu, 27 Feb 2020 16:25:43 +0000 (17:25 +0100)
committerOlivier Houchard <cognet@ci0.org>
Tue, 17 Mar 2020 12:38:09 +0000 (13:38 +0100)
Introduce a new spinlock, log_lock, and use it instead of abusing the FD lock.

src/fd.c

index 8eea0f5e9c17367ffae3a02717dd664eb78a1baf..fb8cc47d60eab7d51abd98850a7f76d9c2bab093 100644 (file)
--- a/src/fd.c
+++ b/src/fd.c
@@ -364,6 +364,7 @@ void updt_fd_polling(const int fd)
        }
 }
 
+__decl_spinlock(log_lock);
 /* Tries to send <npfx> parts from <prefix> followed by <nmsg> parts from <msg>
  * optionally followed by a newline if <nl> is non-null, to file descriptor
  * <fd>. The message is sent atomically using writev(). It may be truncated to
@@ -421,9 +422,9 @@ ssize_t fd_write_frag_line(int fd, size_t maxlen, const struct ist pfx[], size_t
                        fcntl(fd, F_SETFL, O_NONBLOCK);
        }
 
-       HA_SPIN_LOCK(FD_LOCK, &fdtab[fd].lock);
+       HA_SPIN_LOCK(OTHER_LOCK, &log_lock);
        sent = writev(fd, iovec, vec);
-       HA_SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
+       HA_SPIN_UNLOCK(OTHER_LOCK, &log_lock);
 
        /* sent > 0 if the message was delivered */
        return sent;