summaryrefslogtreecommitdiffstats
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
commite7225f7e813423c3e2a94af6a9d7ce8a1b50a166 (patch)
tree12d38bf94c5e7054c073fa7fa4d4d79666e5d6db
parent6ae15544ccfc3ff5d97565ad41ba7f57c7d29b0f (diff)
downloadsamba-e7225f7e813423c3e2a94af6a9d7ce8a1b50a166.tar.gz
samba-e7225f7e813423c3e2a94af6a9d7ce8a1b50a166.tar.xz
samba-e7225f7e813423c3e2a94af6a9d7ce8a1b50a166.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.
-rw-r--r--source/include/local.h2
-rw-r--r--source/locking/brlock.c6
-rw-r--r--source/locking/locking.c3
-rw-r--r--source/param/loadparm.c4
4 files changed, 11 insertions, 4 deletions
diff --git a/source/include/local.h b/source/include/local.h
index 916fb6e46d3..fb931976362 100644
--- a/source/include/local.h
+++ b/source/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/source/locking/brlock.c b/source/locking/brlock.c
index 8af6effb191..5078515b3e9 100644
--- a/source/locking/brlock.c
+++ b/source/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/source/locking/locking.c b/source/locking/locking.c
index 5cb1f71555d..0ecc90c794c 100644
--- a/source/locking/locking.c
+++ b/source/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/source/param/loadparm.c b/source/param/loadparm.c
index 13f585d8d0a..a80eda7a4ef 100644
--- a/source/param/loadparm.c
+++ b/source/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)