The branch, v3-4-test has been updated via bbdc2c0... Fix bug 6837 - "Too many open files" when trying to access large number of files from 29b9236... WHATSNEW: Update changes.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test - Log ----------------------------------------------------------------- commit bbdc2c017ca5abb35897ab61717b806133e0af0b Author: Jeremy Allison <j...@samba.org> Date: Thu Dec 17 16:59:56 2009 -0800 Fix bug 6837 - "Too many open files" when trying to access large number of files Win7 needs the Windows server open file handle number of 16384 handles. Jeremy. ----------------------------------------------------------------------- Summary of changes: source3/include/local.h | 24 +++++++++++++++++++++--- source3/param/loadparm.c | 16 ++++++++++++++++ source3/smbd/files.c | 2 -- 3 files changed, 37 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/include/local.h b/source3/include/local.h index 45767ad..a88b17b 100644 --- a/source3/include/local.h +++ b/source3/include/local.h @@ -56,7 +56,25 @@ #define SYSLOG_FACILITY LOG_DAEMON #endif -/* +/* + * Fudgefactor required for open tdb's, etc. + */ + +#ifndef MAX_OPEN_FUDGEFACTOR +#define MAX_OPEN_FUDGEFACTOR 20 +#endif + +/* + * Minimum number of open files needed for Windows7 to + * work correctly. A little conservative but better that + * than run out of fd's. + */ + +#ifndef MIN_OPEN_FILES_WINDOWS +#define MIN_OPEN_FILES_WINDOWS 16384 +#endif + +/* * Default number of maximum open files per smbd. This is * also limited by the maximum available file descriptors * per process and can also be set in smb.conf as "max open files" @@ -64,9 +82,9 @@ */ #ifndef MAX_OPEN_FILES -#define MAX_OPEN_FILES 10000 +#define MAX_OPEN_FILES (MIN_OPEN_FILES_WINDOWS + MAX_OPEN_FUDGEFACTOR) #endif - + #define WORDMAX 0xFFFF /* the maximum password length before we declare a likely attack */ diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index cd27fe4..ccf642d 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -4692,6 +4692,22 @@ static int max_open_files(void) #endif #endif + if (sysctl_max < MIN_OPEN_FILES_WINDOWS) { + DEBUG(2,("max_open_files: sysctl_max (%d) below " + "minimum Windows limit (%d)\n", + sysctl_max, + MIN_OPEN_FILES_WINDOWS)); + sysctl_max = MIN_OPEN_FILES_WINDOWS; + } + + if (rlimit_max < MIN_OPEN_FILES_WINDOWS) { + DEBUG(2,("rlimit_max: rlimit_max (%d) below " + "minimum Windows limit (%d)\n", + rlimit_max, + MIN_OPEN_FILES_WINDOWS)); + rlimit_max = MIN_OPEN_FILES_WINDOWS; + } + return MIN(sysctl_max, rlimit_max); } diff --git a/source3/smbd/files.c b/source3/smbd/files.c index 6f82686..03d2f58 100644 --- a/source3/smbd/files.c +++ b/source3/smbd/files.c @@ -155,8 +155,6 @@ void file_close_pid(uint16 smbpid, int vuid) Initialise file structures. ****************************************************************************/ -#define MAX_OPEN_FUDGEFACTOR 20 - void file_init(void) { int request_max_open_files = lp_max_open_files(); -- Samba Shared Repository