MINOR: fd: move .cloned into fdtab[].state

No need to keep this flag apart any more, let's merge it into the global
state.
This commit is contained in:
Willy Tarreau 2021-04-06 17:53:33 +02:00
parent b41a6e9101
commit 030dae13a0
5 changed files with 5 additions and 5 deletions

View File

@ -64,6 +64,7 @@ enum {
/* 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 @@ enum {
/* 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 @@ struct fdtab {
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 */

View File

@ -433,7 +433,6 @@ static inline void fd_insert(int fd, void *owner, void (*iocb)(int fd), unsigned
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

View File

@ -1203,7 +1203,7 @@ static int cli_io_handler_show_fd(struct appctx *appctx)
(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);

View File

@ -41,7 +41,7 @@ static int epoll_fd[MAX_THREADS]; // per-thread epoll_fd
*/
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;

View File

@ -819,7 +819,7 @@ int fork_poller()
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);
}
}