diff options
author | Jeremy Allison <jra@samba.org> | 1998-10-16 06:16:10 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1998-10-16 06:16:10 +0000 |
commit | f3793be1651c055da7cfa58afb817547df766de8 (patch) | |
tree | 092a69f5bb0f13bd63be48e1fb5c116ecf540977 | |
parent | c9ab92ffe523a7061e97668becf08705db1d744f (diff) | |
download | samba-f3793be1651c055da7cfa58afb817547df766de8.tar.gz samba-f3793be1651c055da7cfa58afb817547df766de8.tar.bz2 samba-f3793be1651c055da7cfa58afb817547df766de8.zip |
Re-added code to tell the user how many open files they
have. Needed for server diagnosis purposes...
Jeremy.
(This used to be commit 04d79a9ae515e7259277f9980552f1d61df239f1)
-rw-r--r-- | source3/include/proto.h | 4 | ||||
-rw-r--r-- | source3/lib/util.c | 12 | ||||
-rw-r--r-- | source3/smbd/files.c | 20 | ||||
-rw-r--r-- | source3/smbwrapper/smbw.c | 2 |
4 files changed, 25 insertions, 13 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 09fe5b0873..d563db3933 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -351,7 +351,7 @@ char *sid_to_string(pstring sidstr_out, DOM_SID *sid); BOOL string_to_sid(DOM_SID *sidout, char *sidstr); int str_checksum(const char *s); void zero_free(void *p, size_t size); -int set_maxfiles(void); +int set_maxfiles(int requested_max); /*The following definitions come from libsmb/clientgen.c */ @@ -1189,7 +1189,7 @@ BOOL trust_password_unlock(void); BOOL trust_password_delete( char *domain, char *name ); BOOL get_trust_account_password( unsigned char *ret_pwd, time_t *pass_last_set_time); BOOL set_trust_account_password( unsigned char *md4_new_pwd); -BOOL trust_get_passwd( unsigned char trust_passwd[16], char *myname, char *domain); +BOOL trust_get_passwd( unsigned char trust_passwd[16], char *domain, char *myname); /*The following definitions come from printing/pcap.c */ diff --git a/source3/lib/util.c b/source3/lib/util.c index c1307336cc..d0cb51f3ca 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -4849,9 +4849,9 @@ void zero_free(void *p, size_t size) /***************************************************************** -set our open file limit to the max and return the limit +set our open file limit to a requested max and return the limit *****************************************************************/ -int set_maxfiles(void) +int set_maxfiles(int requested_max) { #if (defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE)) struct rlimit rlp; @@ -4860,13 +4860,15 @@ int set_maxfiles(void) * account for the extra fd we need * as well as the log files and standard * handles etc. */ - rlp.rlim_cur = rlp.rlim_max; + rlp.rlim_cur = MIN(requested_max,rlp.rlim_max); setrlimit(RLIMIT_NOFILE, &rlp); getrlimit(RLIMIT_NOFILE, &rlp); return rlp.rlim_cur; #else - /* just guess ... */ - return 1024; + /* + * No way to know - just guess... + */ + return requested_max; #endif } diff --git a/source3/smbd/files.c b/source3/smbd/files.c index 4030ad4c49..c369a45bab 100644 --- a/source3/smbd/files.c +++ b/source3/smbd/files.c @@ -202,13 +202,23 @@ initialise file structures void file_init(void) { - int lim; + int request_max_open_files = lp_max_open_files(); + int real_lim; - lim = set_maxfiles(); - lim = MIN(lim, lp_max_open_files()); + /* + * Set the max_open files to be the requested + * max plus a fudgefactor to allow for the extra + * fd's we need such as log files etc... + */ + real_lim = set_maxfiles(request_max_open_files + MAX_OPEN_FUDGEFACTOR); + + 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 \ +open files, %d are available.\n", request_max_open_files, real_max_open_files)); + } - real_max_open_files = lim - MAX_OPEN_FUDGEFACTOR; - file_bmap = bitmap_allocate(real_max_open_files); if (!file_bmap) { diff --git a/source3/smbwrapper/smbw.c b/source3/smbwrapper/smbw.c index d9ff6daa05..9c690ac5fb 100644 --- a/source3/smbwrapper/smbw.c +++ b/source3/smbwrapper/smbw.c @@ -100,7 +100,7 @@ void smbw_init(void) } smbw_busy--; - set_maxfiles(); + set_maxfiles(lp_max_open_files()+10); errno = eno; } |