From: Steinar H. Gunderson Date: Wed, 9 Dec 2020 23:37:41 +0000 (+0100) Subject: Increase hard file limit if possible. X-Git-Tag: 1.1.2~1 X-Git-Url: https://git.sesse.net/?p=plocate;a=commitdiff_plain;h=654a776cf218202dd10ccfba8f0be46016b1edde 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. --- 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.