diff options
author | Steven Danneman <steven.danneman@isilon.com> | 2009-08-26 16:17:38 -0700 |
---|---|---|
committer | Steven Danneman <steven.danneman@isilon.com> | 2009-08-26 16:34:10 -0700 |
commit | 6c55518d471950d8ebaf0df47634116802d6f735 (patch) | |
tree | f9041a6b1ad050a921c6fed0a3f767373e8e3f36 | |
parent | bc4b253b2c793a2fce6614ee7fadf1713f558776 (diff) | |
download | samba-6c55518d471950d8ebaf0df47634116802d6f735.tar.gz samba-6c55518d471950d8ebaf0df47634116802d6f735.tar.bz2 samba-6c55518d471950d8ebaf0df47634116802d6f735.zip |
s3/smbd: open the share_info.tdb on startup instead of tconx
This is a small performance optimization. Instead of opening the tdb
on every smb connection in the forked child process, we now open it in
the parent and share the fd.
This also reduces the total fd usage in the system.
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/lib/sharesec.c | 2 | ||||
-rw-r--r-- | source3/smbd/server.c | 9 |
3 files changed, 11 insertions, 1 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 50ac834307..0da8c25a39 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -721,6 +721,7 @@ struct named_mutex *grab_named_mutex(TALLOC_CTX *mem_ctx, const char *name, /* The following definitions come from lib/sharesec.c */ +bool share_info_db_init(void); SEC_DESC *get_share_security_default( TALLOC_CTX *ctx, size_t *psize, uint32 def_access); SEC_DESC *get_share_security( TALLOC_CTX *ctx, const char *servicename, size_t *psize); diff --git a/source3/lib/sharesec.c b/source3/lib/sharesec.c index a1d30f1d2b..799d983c82 100644 --- a/source3/lib/sharesec.c +++ b/source3/lib/sharesec.c @@ -37,7 +37,7 @@ static int delete_fn(struct db_record *rec, void *priv) return 0; } -static bool share_info_db_init(void) +bool share_info_db_init(void) { const char *vstring = "INFO/version"; int32 vers_id; diff --git a/source3/smbd/server.c b/source3/smbd/server.c index ace3124842..09ad8d8ea5 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1218,6 +1218,15 @@ extern void build_options(bool screen); return -1; } + /* Open the share_info.tdb here, so we don't have to open + after the fork on every single connection. This is a small + performance improvment and reduces the total number of system + fds used. */ + if (!share_info_db_init()) { + DEBUG(0,("ERROR: failed to load share info db.\n")); + exit(1); + } + /* only start the background queue daemon if we are running as a daemon -- bad things will happen if smbd is launched via inetd and we fork a copy of |