1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

Added fix from "Eric Boehm" <boehm@nortelnetworks.com> to try and set hard

limit before setting soft limit.
Jeremy.
(This used to be commit a1eb2752a8bee9cc7d92c664c3de84e02620933d)
This commit is contained in:
Jeremy Allison 2001-04-13 19:33:26 +00:00
parent 2ef68c7e92
commit 3c2c047e82
2 changed files with 27 additions and 3 deletions

View File

@ -1636,6 +1636,30 @@ int set_maxfiles(int requested_max)
* which always returns RLIM_INFINITY for rlp.rlim_max.
*/
/* Try raising the hard (max) limit to the requested amount. */
#if defined(RLIM_INFINITY)
if (rlp.rlim_max != RLIM_INFINITY) {
int orig_max = rlp.rlim_max;
if ( rlp.rlim_max < requested_max )
rlp.rlim_max = requested_max;
/* This failing is not an error - many systems (Linux) don't
support our default request of 10,000 open files. JRA. */
if(setrlimit(RLIMIT_NOFILE, &rlp)) {
DEBUG(3,("set_maxfiles: setrlimit for RLIMIT_NOFILE for %d max files failed with error %s\n",
(int)rlp.rlim_max, strerror(errno) ));
/* Set failed - restore original value from get. */
rlp.rlim_max = orig_max;
}
}
#endif
/* Now try setting the soft (current) limit. */
saved_current_limit = rlp.rlim_cur = MIN(requested_max,rlp.rlim_max);
if(setrlimit(RLIMIT_NOFILE, &rlp)) {

View File

@ -134,7 +134,7 @@ initialise file structures
void file_init(void)
{
int request_max_open_files = lp_max_open_files();
int request_max_open_files = lp_max_open_files();
int real_lim;
/*
@ -146,8 +146,8 @@ void file_init(void)
real_max_open_files = real_lim - MAX_OPEN_FUDGEFACTOR;
if(real_max_open_files != request_max_open_files) {
DEBUG(1,("file_init: Information only: requested %d \
if(real_max_open_files != request_max_open_files) {
DEBUG(1,("file_init: Information only: requested %d \
open files, %d are available.\n", request_max_open_files, real_max_open_files));
}