Blob Blame History Raw
autofs-5.1.8 - fix set open file limit

From: Ian Kent <raven@themaw.net>

The check of whether the open file limit needs to be changed is not
right, it checks the hard open file limit against what autofs wants
to set it to which is always less than this value. Consequently the
open file limit isn't changed.

autofs should be changing only the soft open file limit but it is
setting both the hard and soft limits. The system hard limit is much
higer than the autofs maximum open files so the hard limit should be
left alone.

While we are here increase the requested maximum soft open file limit
to 20k.

Signed-off-by: Ian Kent <raven@themaw.net>
---
 CHANGELOG          |    1 +
 daemon/automount.c |    7 ++++---
 2 files changed, 5 insertions(+), 3 deletions(-)

--- autofs-5.1.4.orig/CHANGELOG
+++ autofs-5.1.4/CHANGELOG
@@ -79,6 +79,7 @@
 - fix nonstrict offset mount fail handling.
 - remove intr hosts map mount option.
 - fix kernel mount status notification.
+- fix set open file limit.
 
 xx/xx/2018 autofs-5.1.5
 - fix flag file permission.
--- autofs-5.1.4.orig/daemon/automount.c
+++ autofs-5.1.4/daemon/automount.c
@@ -95,7 +95,7 @@ struct startup_cond suc = {
 pthread_key_t key_thread_stdenv_vars;
 pthread_key_t key_thread_attempt_id = (pthread_key_t) 0L;
 
-#define MAX_OPEN_FILES		10240
+#define MAX_OPEN_FILES		20480
 
 int aquire_flag_file(void);
 void release_flag_file(void);
@@ -2475,9 +2475,10 @@ int main(int argc, char *argv[])
 	}
 
 	res = getrlimit(RLIMIT_NOFILE, &rlim);
-	if (res == -1 || rlim.rlim_max <= MAX_OPEN_FILES)  {
+	if (res == -1 || rlim.rlim_cur <= MAX_OPEN_FILES)  {
 		rlim.rlim_cur = MAX_OPEN_FILES;
-		rlim.rlim_max = MAX_OPEN_FILES;
+		if (rlim.rlim_max < MAX_OPEN_FILES)
+			rlim.rlim_max = MAX_OPEN_FILES;
 	}
 	res = setrlimit(RLIMIT_NOFILE, &rlim);
 	if (res)