diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-10-05 01:57:03 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-10-05 01:57:03 +0000 |
commit | 7a7b5ee1689b6be57752d176c7b77a2f1b453486 (patch) | |
tree | 33d6c2280d2a57389ab5db4d713b08fda514367f /source/smbd/files.c | |
parent | 6a1b346d98c10688f0995a6ab8fd155a77ead258 (diff) | |
download | samba-7a7b5ee1689b6be57752d176c7b77a2f1b453486.tar.gz samba-7a7b5ee1689b6be57752d176c7b77a2f1b453486.tar.xz samba-7a7b5ee1689b6be57752d176c7b77a2f1b453486.zip |
added a function set_maxfiles() to set our file rlimit to the max
possible and return the max.
Diffstat (limited to 'source/smbd/files.c')
-rw-r--r-- | source/smbd/files.c | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/source/smbd/files.c b/source/smbd/files.c index 4000439db0e..6afa0597535 100644 --- a/source/smbd/files.c +++ b/source/smbd/files.c @@ -202,38 +202,19 @@ initialise file structures void file_init(void) { - real_max_open_files = lp_max_open_files(); - -#if (defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE)) - { - struct rlimit rlp; - getrlimit(RLIMIT_NOFILE, &rlp); - /* Set the fd limit to be real_max_open_files + MAX_OPEN_FUDGEFACTOR to - * account for the extra fd we need - * as well as the log files and standard - * handles etc. */ - rlp.rlim_cur = (real_max_open_files+MAX_OPEN_FUDGEFACTOR>rlp.rlim_max)? - rlp.rlim_max:real_max_open_files+MAX_OPEN_FUDGEFACTOR; - setrlimit(RLIMIT_NOFILE, &rlp); - getrlimit(RLIMIT_NOFILE, &rlp); - if(rlp.rlim_cur != (real_max_open_files + MAX_OPEN_FUDGEFACTOR)) - DEBUG(0,("file_init: Maximum number of open files requested per session \ -was %d, actual files available per session = %d\n", - real_max_open_files, (int)rlp.rlim_cur - MAX_OPEN_FUDGEFACTOR )); - - DEBUG(2,("Maximum number of open files per session is %d\n", - (int)rlp.rlim_cur - MAX_OPEN_FUDGEFACTOR)); - - real_max_open_files = (int)rlp.rlim_cur - MAX_OPEN_FUDGEFACTOR; - } -#endif + int real_max_open_files, lim; - file_bmap = bitmap_allocate(real_max_open_files); + lim = set_maxfiles(); + lim = MIN(lim, lp_max_open_files()); + real_max_open_files = lim - MAX_OPEN_FUDGEFACTOR; + + file_bmap = bitmap_allocate(real_max_open_files); + if (!file_bmap) { exit_server("out of memory in file_init"); } - + /* * Ensure that pipe_handle_oppset is set correctly. */ |