diff options
-rw-r--r-- | source3/include/local.h | 2 | ||||
-rw-r--r-- | source3/locking/brlock.c | 6 | ||||
-rw-r--r-- | source3/locking/locking.c | 3 | ||||
-rw-r--r-- | source3/param/loadparm.c | 4 |
4 files changed, 11 insertions, 4 deletions
diff --git a/source3/include/local.h b/source3/include/local.h index 916fb6e46d..fb93197636 100644 --- a/source3/include/local.h +++ b/source3/include/local.h @@ -236,7 +236,7 @@ #define MAX_LDAP_REPLICATION_SLEEP_TIME 5000 /* In milliseconds. */ /* tdb hash size for the open database. */ -#define SMB_OPEN_DATABASE_TDB_HASH_SIZE 1049 +#define SMB_OPEN_DATABASE_TDB_HASH_SIZE 10007 /* Characters we disallow in sharenames. */ #define INVALID_SHARENAME_CHARS "%<>*?|/\\+=;:\"," diff --git a/source3/locking/brlock.c b/source3/locking/brlock.c index 8af6effb19..5078515b3e 100644 --- a/source3/locking/brlock.c +++ b/source3/locking/brlock.c @@ -289,8 +289,10 @@ void brl_init(int read_only) { if (tdb) return; - tdb = tdb_open_log(lock_path("brlock.tdb"), 0, TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST), - read_only?O_RDONLY:(O_RDWR|O_CREAT), 0644 ); + tdb = tdb_open_log(lock_path("brlock.tdb"), + lp_open_files_db_hash_size(), + TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST), + read_only?O_RDONLY:(O_RDWR|O_CREAT), 0644 ); if (!tdb) { DEBUG(0,("Failed to open byte range locking database\n")); return; diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 5cb1f71555..0ecc90c794 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -301,7 +301,8 @@ BOOL locking_init(int read_only) return True; tdb = tdb_open_log(lock_path("locking.tdb"), - SMB_OPEN_DATABASE_TDB_HASH_SIZE, TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST), + lp_open_files_db_hash_size(), + TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST), read_only?O_RDONLY:O_RDWR|O_CREAT, 0644); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 13f585d8d0..a80eda7a4e 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -201,6 +201,7 @@ typedef struct { int max_xmit; int max_mux; int max_open_files; + int open_files_db_hash_size; int pwordlevel; int unamelevel; int deadtime; @@ -1023,6 +1024,7 @@ static struct parm_struct parm_table[] = { {"max disk size", P_INTEGER, P_GLOBAL, &Globals.maxdisksize, NULL, NULL, FLAG_ADVANCED}, {"max open files", P_INTEGER, P_GLOBAL, &Globals.max_open_files, NULL, NULL, FLAG_ADVANCED}, {"min print space", P_INTEGER, P_LOCAL, &sDefault.iMinPrintSpace, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT}, + {"open files database hash size", P_INTEGER, P_GLOBAL, &Globals.open_files_db_hash_size, NULL, NULL, FLAG_ADVANCED}, {"socket options", P_GSTRING, P_GLOBAL, user_socket_options, NULL, NULL, FLAG_ADVANCED}, {"strict allocate", P_BOOL, P_LOCAL, &sDefault.bStrictAllocate, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, @@ -1498,6 +1500,7 @@ static void init_globals(BOOL first_time_only) Globals.bLargeReadwrite = True; Globals.max_log_size = 5000; Globals.max_open_files = MAX_OPEN_FILES; + Globals.open_files_db_hash_size = SMB_OPEN_DATABASE_TDB_HASH_SIZE; Globals.maxprotocol = PROTOCOL_NT1; Globals.minprotocol = PROTOCOL_CORE; Globals.security = SEC_USER; @@ -1938,6 +1941,7 @@ FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) FN_GLOBAL_INTEGER(lp_max_log_size, &Globals.max_log_size) FN_GLOBAL_INTEGER(lp_max_open_files, &Globals.max_open_files) +FN_GLOBAL_INTEGER(lp_open_files_db_hash_size, &Globals.open_files_db_hash_size) FN_GLOBAL_INTEGER(lp_maxxmit, &Globals.max_xmit) FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) |