mirror of
https://github.com/trapexit/mergerfs.git
synced 2025-01-22 08:26:15 +08:00
Merge pull request #51 from trapexit/rlimits
Try RLIMIT_INFINITY first, then cur = max, then loop and try to increase...
This commit is contained in:
commit
e0f0bb53f7
|
@ -42,25 +42,29 @@ namespace mergerfs
|
||||||
int
|
int
|
||||||
maxout_rlimit(int resource)
|
maxout_rlimit(int resource)
|
||||||
{
|
{
|
||||||
|
int rv;
|
||||||
struct rlimit rlim;
|
struct rlimit rlim;
|
||||||
|
|
||||||
if(geteuid() == 0)
|
rlim.rlim_cur = RLIM_INFINITY;
|
||||||
{
|
rlim.rlim_max = RLIM_INFINITY;
|
||||||
rlim.rlim_cur = RLIM_INFINITY;
|
rv = ::setrlimit(resource,&rlim);
|
||||||
rlim.rlim_max = RLIM_INFINITY;
|
if(rv == 0)
|
||||||
}
|
return 0;
|
||||||
else
|
|
||||||
{
|
|
||||||
int rv;
|
|
||||||
|
|
||||||
rv = ::getrlimit(resource,&rlim);
|
rv = ::getrlimit(resource,&rlim);
|
||||||
if(rv == -1)
|
if(rv == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
rlim.rlim_cur = rlim.rlim_max;
|
rv = 0;
|
||||||
|
rlim.rlim_cur = rlim.rlim_max;
|
||||||
|
while(rv == 0)
|
||||||
|
{
|
||||||
|
rv = ::setrlimit(resource,&rlim);
|
||||||
|
rlim.rlim_max *= 2;
|
||||||
|
rlim.rlim_cur = rlim.rlim_max;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ::setrlimit(resource,&rlim);
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue
Block a user