summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-03-29 22:19:01 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:15:46 -0500
commit81d4f40bbe202e5dae3d4d1070b02edf16a9f62e (patch)
treebbaf7d335dfd8743795a8c1aa97474b7b8e9df61
parent70b59a3b20bc3cd3e1456dc552c43cd1da22f1b0 (diff)
downloadsamba-81d4f40bbe202e5dae3d4d1070b02edf16a9f62e.tar.gz
samba-81d4f40bbe202e5dae3d4d1070b02edf16a9f62e.tar.bz2
samba-81d4f40bbe202e5dae3d4d1070b02edf16a9f62e.zip
r14763: Add a new tuning parameter, open files database hash size,
this allows us to experiment with ensuring the tdb hash size for our open files and locking db are appropriately sized. Make the hash size larger by default (10007 instead of 1049) and make the locking db hash size the same as the open file db hash size. Jeremy. (This used to be commit e7225f7e813423c3e2a94af6a9d7ce8a1b50a166)
-rw-r--r--source3/include/local.h2
-rw-r--r--source3/locking/brlock.c6
-rw-r--r--source3/locking/locking.c3
-rw-r--r--source3/param/loadparm.c4
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)