mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
Try to increase file descriptor rlimit if necessary
As the default can be too low, especially on OSX.
This commit is contained in:
23
src/util.cpp
23
src/util.cpp
@@ -10,6 +10,7 @@
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#include "util.h"
|
||||
@@ -1167,6 +1168,28 @@ bool TruncateFile(FILE *file, unsigned int length) {
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// this function tries to raise the file descriptor limit to the requested number.
|
||||
// It returns the actual file descriptor limit (which may be more or less than nMinFD)
|
||||
int RaiseFileDescriptorLimit(int nMinFD) {
|
||||
#if defined(WIN32)
|
||||
return 2048;
|
||||
#else
|
||||
struct rlimit limitFD;
|
||||
if (getrlimit(RLIMIT_NOFILE, &limitFD) != -1) {
|
||||
if (limitFD.rlim_cur < (rlim_t)nMinFD) {
|
||||
limitFD.rlim_cur = nMinFD;
|
||||
if (limitFD.rlim_cur > limitFD.rlim_max)
|
||||
limitFD.rlim_cur = limitFD.rlim_max;
|
||||
setrlimit(RLIMIT_NOFILE, &limitFD);
|
||||
getrlimit(RLIMIT_NOFILE, &limitFD);
|
||||
}
|
||||
return limitFD.rlim_cur;
|
||||
}
|
||||
return nMinFD; // getrlimit failed, assume it's fine
|
||||
#endif
|
||||
}
|
||||
|
||||
// this function tries to make a particular range of a file allocated (corresponding to disk space)
|
||||
// it is advisory, and the range specified in the arguments will never contain live data
|
||||
void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length) {
|
||||
|
||||
Reference in New Issue
Block a user