From 82e378aa8ab34e3d9aedb9971ae704ca17c28e16 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 6 Jul 2022 11:22:42 +0200 Subject: [PATCH] MINOR: fd/thread: get rid of thread_mask() Since commit d2494e048 ("BUG/MEDIUM: peers/config: properly set the thread mask") there must not remain any single case of a receiver that is bound nowhere, so there's no need anymore for thread_mask(). We're adding a test in fd_insert() to make sure this doesn't happen by accident though, but the function was removed and its rare uses were replaced with the original value of the bind_thread msak. --- include/haproxy/fd.h | 1 + include/haproxy/thread.h | 6 ------ src/listener.c | 2 +- src/proto_sockpair.c | 2 +- src/sock_inet.c | 2 +- src/sock_unix.c | 2 +- 6 files changed, 5 insertions(+), 10 deletions(-) diff --git a/include/haproxy/fd.h b/include/haproxy/fd.h index 7d67cef43..2b2c3ff38 100644 --- a/include/haproxy/fd.h +++ b/include/haproxy/fd.h @@ -334,6 +334,7 @@ static inline void fd_insert(int fd, void *owner, void (*iocb)(int fd), unsigned BUG_ON(fd < 0 || fd >= global.maxsock); BUG_ON(fdtab[fd].owner != NULL); BUG_ON(fdtab[fd].state != 0); + BUG_ON(thread_mask == 0); fdtab[fd].owner = owner; fdtab[fd].iocb = iocb; diff --git a/include/haproxy/thread.h b/include/haproxy/thread.h index fe2312756..67aefc7a3 100644 --- a/include/haproxy/thread.h +++ b/include/haproxy/thread.h @@ -469,10 +469,4 @@ void __spin_unlock(enum lock_label lbl, struct ha_spinlock *l, #endif /* USE_THREAD */ -/* returns a mask if set, otherwise all_threads_mask */ -static inline unsigned long thread_mask(unsigned long mask) -{ - return mask ? mask : all_threads_mask; -} - #endif /* _HAPROXY_THREAD_H */ diff --git a/src/listener.c b/src/listener.c index 6b088026f..5b91faf3e 100644 --- a/src/listener.c +++ b/src/listener.c @@ -992,7 +992,7 @@ void listener_accept(struct listener *l) if (l->rx.flags & RX_F_LOCAL_ACCEPT) goto local_accept; - mask = thread_mask(l->rx.bind_thread) & all_threads_mask; + mask = l->rx.bind_thread & all_threads_mask; if (atleast2(mask) && (global.tune.options & GTUNE_LISTENER_MQ) && !stopping) { struct accept_queue_ring *ring; unsigned int t, t0, t1, t2; diff --git a/src/proto_sockpair.c b/src/proto_sockpair.c index 54cc34f23..234ec108a 100644 --- a/src/proto_sockpair.c +++ b/src/proto_sockpair.c @@ -157,7 +157,7 @@ int sockpair_bind_receiver(struct receiver *rx, char **errmsg) rx->flags |= RX_F_BOUND; - fd_insert(rx->fd, rx->owner, rx->iocb, thread_mask(rx->bind_thread) & all_threads_mask); + fd_insert(rx->fd, rx->owner, rx->iocb, rx->bind_thread & all_threads_mask); return err; bind_return: diff --git a/src/sock_inet.c b/src/sock_inet.c index 46cc16a1c..bc3b762f7 100644 --- a/src/sock_inet.c +++ b/src/sock_inet.c @@ -390,7 +390,7 @@ int sock_inet_bind_receiver(struct receiver *rx, char **errmsg) rx->fd = fd; rx->flags |= RX_F_BOUND; - fd_insert(fd, rx->owner, rx->iocb, thread_mask(rx->bind_thread) & all_threads_mask); + fd_insert(fd, rx->owner, rx->iocb, rx->bind_thread & all_threads_mask); /* for now, all regularly bound TCP listeners are exportable */ if (!(rx->flags & RX_F_INHERITED)) diff --git a/src/sock_unix.c b/src/sock_unix.c index 143295e79..6544ccf09 100644 --- a/src/sock_unix.c +++ b/src/sock_unix.c @@ -284,7 +284,7 @@ int sock_unix_bind_receiver(struct receiver *rx, char **errmsg) rx->fd = fd; rx->flags |= RX_F_BOUND; - fd_insert(fd, rx->owner, rx->iocb, thread_mask(rx->bind_thread) & all_threads_mask); + fd_insert(fd, rx->owner, rx->iocb, rx->bind_thread & all_threads_mask); /* for now, all regularly bound TCP listeners are exportable */ if (!(rx->flags & RX_F_INHERITED))