From 56468b07a43cd540967b25a5c16d44b7ecca6724 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 25 Mar 2020 10:19:56 +0000 Subject: [PATCH] [Minor] Slightly improve ev backend selection --- src/libserver/cfg_utils.c | 44 +++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index 01fa08f74..d3ad9e210 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -2579,12 +2579,13 @@ rspamd_config_register_settings_id (struct rspamd_config *cfg, int rspamd_config_ev_backend_get (struct rspamd_config *cfg) { +#define AUTO_BACKEND (ev_supported_backends () & ~EVBACKEND_IOURING) if (cfg == NULL || cfg->events_backend == NULL) { - return ev_supported_backends () & ~EVBACKEND_IOURING; + return AUTO_BACKEND; } if (strcmp (cfg->events_backend, "auto") == 0) { - return ev_supported_backends () & ~EVBACKEND_IOURING; + return AUTO_BACKEND; } else if (strcmp (cfg->events_backend, "epoll") == 0) { if (ev_supported_backends () & EVBACKEND_EPOLL) { @@ -2593,7 +2594,17 @@ rspamd_config_ev_backend_get (struct rspamd_config *cfg) else { msg_warn_config ("unsupported events_backend: %s; defaulting to auto", cfg->events_backend); - return ev_supported_backends (); + return AUTO_BACKEND; + } + } + else if (strcmp (cfg->events_backend, "iouring") == 0) { + if (ev_supported_backends () & EVBACKEND_IOURING) { + return EVBACKEND_IOURING; + } + else { + msg_warn_config ("unsupported events_backend: %s; defaulting to auto", + cfg->events_backend); + return AUTO_BACKEND; } } else if (strcmp (cfg->events_backend, "kqueue") == 0) { @@ -2603,7 +2614,7 @@ rspamd_config_ev_backend_get (struct rspamd_config *cfg) else { msg_warn_config ("unsupported events_backend: %s; defaulting to auto", cfg->events_backend); - return ev_supported_backends (); + return AUTO_BACKEND; } } else if (strcmp (cfg->events_backend, "poll") == 0) { @@ -2617,7 +2628,7 @@ rspamd_config_ev_backend_get (struct rspamd_config *cfg) cfg->events_backend); } - return ev_supported_backends () & ~EVBACKEND_IOURING; + return AUTO_BACKEND; } const gchar * @@ -2630,15 +2641,22 @@ rspamd_config_ev_backend_to_string (int ev_backend, gboolean *effective) return "auto"; } + if (ev_backend & EVBACKEND_IOURING) { + SET_EFFECTIVE (TRUE); + return "epoll+io_uring"; + } + if (ev_backend & EVBACKEND_LINUXAIO) { + SET_EFFECTIVE (TRUE); + return "epoll+aio"; + }if (ev_backend & EVBACKEND_IOURING) { + SET_EFFECTIVE (TRUE); + return "epoll+io_uring"; + } + if (ev_backend & EVBACKEND_LINUXAIO) { + SET_EFFECTIVE (TRUE); + return "epoll+aio"; + } if (ev_backend & EVBACKEND_EPOLL) { - if (ev_backend & EVBACKEND_IOURING) { - SET_EFFECTIVE (TRUE); - return "epoll+io_uring"; - } - if (ev_backend & EVBACKEND_LINUXAIO) { - SET_EFFECTIVE (TRUE); - return "epoll+aio"; - } SET_EFFECTIVE (TRUE); return "epoll"; } -- 2.39.5