MINOR: fd: move .cloned into fdtab[].state
No need to keep this flag apart any more, let's merge it into the global
state.
diff --git a/include/haproxy/fd-t.h b/include/haproxy/fd-t.h
index d15a977..1f55840 100644
--- a/include/haproxy/fd-t.h
+++ b/include/haproxy/fd-t.h
@@ -64,6 +64,7 @@
/* info/config bits */
#define FD_LINGER_RISK_BIT 16 /* must kill lingering before closing */
+#define FD_CLONED_BIT 17 /* cloned socket, requires EPOLL_CTL_DEL on close */
/* and flag values */
@@ -99,6 +100,7 @@
/* information/configuration flags */
#define FD_LINGER_RISK (1U << FD_LINGER_RISK_BIT)
+#define FD_CLONED (1U << FD_CLONED_BIT)
/* This is the value used to mark a file descriptor as dead. This value is
* negative, this is important so that tests on fd < 0 properly match. It
@@ -147,7 +149,6 @@
void (*iocb)(int fd); /* I/O handler */
void *owner; /* the connection or listener associated with this fd, NULL if closed */
unsigned int state; /* FD state for read and write directions (FD_EV_*) + FD_POLL_* */
- unsigned char cloned:1; /* 1 if a cloned socket, requires EPOLL_CTL_DEL on close */
unsigned char initialized:1; /* 1 if init phase was done on this fd (e.g. set non-blocking) */
unsigned char et_possible:1; /* 1 if edge-triggered is possible on this FD */
unsigned char exported:1; /* 1 if the FD is exported and must not be closed */
diff --git a/include/haproxy/fd.h b/include/haproxy/fd.h
index df9df16..11dce3d 100644
--- a/include/haproxy/fd.h
+++ b/include/haproxy/fd.h
@@ -433,7 +433,6 @@
fdtab[fd].owner = owner;
fdtab[fd].iocb = iocb;
fdtab[fd].state = 0;
- fdtab[fd].cloned = 0;
fdtab[fd].et_possible = 0;
fdtab[fd].exported = 0;
#ifdef DEBUG_FD
diff --git a/src/cli.c b/src/cli.c
index 7c1b029..08c35da 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -1203,7 +1203,7 @@
(fdt.state & FD_POLL_PRI) ? 'P' : 'p',
(fdt.state & FD_POLL_IN) ? 'I' : 'i',
(fdt.state & FD_LINGER_RISK) ? 'L' : 'l',
- fdt.cloned ? 'C' : 'c',
+ (fdt.state & FD_CLONED) ? 'C' : 'c',
fdt.thread_mask, fdt.update_mask,
fdt.owner,
fdt.iocb);
diff --git a/src/ev_epoll.c b/src/ev_epoll.c
index f43875c..22ad454 100644
--- a/src/ev_epoll.c
+++ b/src/ev_epoll.c
@@ -41,7 +41,7 @@
*/
static void __fd_clo(int fd)
{
- if (unlikely(fdtab[fd].cloned)) {
+ if (unlikely(fdtab[fd].state & FD_CLONED)) {
unsigned long m = polled_mask[fd].poll_recv | polled_mask[fd].poll_send;
struct epoll_event ev;
int i;
diff --git a/src/fd.c b/src/fd.c
index e29814b..64e4e9c 100644
--- a/src/fd.c
+++ b/src/fd.c
@@ -819,7 +819,7 @@
int fd;
for (fd = 0; fd < global.maxsock; fd++) {
if (fdtab[fd].owner) {
- fdtab[fd].cloned = 1;
+ HA_ATOMIC_OR(&fdtab[fd].state, FD_CLONED);
}
}