From 075366ad6e6f53a68b173862546ab4cf70fa0b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= Date: Sun, 5 Nov 2017 16:05:39 +0000 Subject: [PATCH] Open inotify socket only when used. Some of our Openstack users run quite large number of dnsmasq instances on single host. They started hitting default limit of inotify socket number on single system after upgrade to more recent version. System defaults of sysctl fs.inotify.max_user_instances is 128. They reached limit of 116 dnsmasq instances, then more instances failed to start. I was surprised they have any use case for such high number of instances. They use one dnsmasq for one virtual network. I found simple way to avoid hitting low system limit. They do not use resolv.conf for name server configuration or any dhcp hosts or options directory. Created inotify socket is never used in that case. Simple patch attached. I know we can raise inotify system limit. I think better is to not waste resources that are left unused. --- src/dnsmasq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dnsmasq.c b/src/dnsmasq.c index 7d65cd0..db3ff5a 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c @@ -360,7 +360,8 @@ int main (int argc, char **argv) } #ifdef HAVE_INOTIFY - if (daemon->port != 0 || daemon->dhcp || daemon->doing_dhcp6) + if ((daemon->port != 0 || daemon->dhcp || daemon->doing_dhcp6) + && (!option_bool(OPT_NO_RESOLV) || daemon->dynamic_dirs)) inotify_dnsmasq_init(); else daemon->inotifyfd = -1;