From 654a776cf218202dd10ccfba8f0be46016b1edde Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 10 Dec 2020 00:37:41 +0100 Subject: [PATCH 1/1] Increase hard file limit if possible. Fixes issues where updatedb was run with a too-low open file limit (both soft and hard), but by root, so we could just raise both limits. Reported by Gregor Herrmann. --- updatedb.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/updatedb.cpp b/updatedb.cpp index 8435a48..17067b8 100644 --- a/updatedb.cpp +++ b/updatedb.cpp @@ -742,6 +742,15 @@ int main(int argc, char **argv) // and can set whatever we want). 128k should be ample for most setups. rlimit rlim; if (getrlimit(RLIMIT_NOFILE, &rlim) != -1) { + // Even root cannot increase rlim_cur beyond rlim_max, + // so we need to try to increase rlim_max first. + // Ignore errors, though. + if (rlim.rlim_max < 131072) { + rlim.rlim_max = 131072; + setrlimit(RLIMIT_NOFILE, &rlim); + getrlimit(RLIMIT_NOFILE, &rlim); + } + rlim_t wanted = std::max(rlim.rlim_cur, 131072); rlim.rlim_cur = std::min(wanted, rlim.rlim_max); setrlimit(RLIMIT_NOFILE, &rlim); // Ignore errors. -- 2.39.2