mirror of
https://github.com/git/git.git
synced 2024-12-18 14:24:11 +08:00
Merge branch 'js/use-sc-open-max' into maint
* js/use-sc-open-max: sha1_file.c: introduce get_max_fd_limit() helper
This commit is contained in:
commit
3119084104
26
sha1_file.c
26
sha1_file.c
@ -731,6 +731,24 @@ void free_pack_by_name(const char *pack_name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int get_max_fd_limit(void)
|
||||||
|
{
|
||||||
|
#ifdef RLIMIT_NOFILE
|
||||||
|
struct rlimit lim;
|
||||||
|
|
||||||
|
if (getrlimit(RLIMIT_NOFILE, &lim))
|
||||||
|
die_errno("cannot get RLIMIT_NOFILE");
|
||||||
|
|
||||||
|
return lim.rlim_cur;
|
||||||
|
#elif defined(_SC_OPEN_MAX)
|
||||||
|
return sysconf(_SC_OPEN_MAX);
|
||||||
|
#elif defined(OPEN_MAX)
|
||||||
|
return OPEN_MAX;
|
||||||
|
#else
|
||||||
|
return 1; /* see the caller ;-) */
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do not call this directly as this leaks p->pack_fd on error return;
|
* Do not call this directly as this leaks p->pack_fd on error return;
|
||||||
* call open_packed_git() instead.
|
* call open_packed_git() instead.
|
||||||
@ -747,13 +765,7 @@ static int open_packed_git_1(struct packed_git *p)
|
|||||||
return error("packfile %s index unavailable", p->pack_name);
|
return error("packfile %s index unavailable", p->pack_name);
|
||||||
|
|
||||||
if (!pack_max_fds) {
|
if (!pack_max_fds) {
|
||||||
struct rlimit lim;
|
unsigned int max_fds = get_max_fd_limit();
|
||||||
unsigned int max_fds;
|
|
||||||
|
|
||||||
if (getrlimit(RLIMIT_NOFILE, &lim))
|
|
||||||
die_errno("cannot get RLIMIT_NOFILE");
|
|
||||||
|
|
||||||
max_fds = lim.rlim_cur;
|
|
||||||
|
|
||||||
/* Save 3 for stdin/stdout/stderr, 22 for work */
|
/* Save 3 for stdin/stdout/stderr, 22 for work */
|
||||||
if (25 < max_fds)
|
if (25 < max_fds)
|
||||||
|
Loading…
Reference in New Issue
Block a user