1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

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.
This commit is contained in:
Steven Danneman 2009-08-26 16:17:38 -07:00
parent bc4b253b2c
commit 6c55518d47
3 changed files with 11 additions and 1 deletions

View File

@ -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 */ /* 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_default( TALLOC_CTX *ctx, size_t *psize, uint32 def_access);
SEC_DESC *get_share_security( TALLOC_CTX *ctx, const char *servicename, SEC_DESC *get_share_security( TALLOC_CTX *ctx, const char *servicename,
size_t *psize); size_t *psize);

View File

@ -37,7 +37,7 @@ static int delete_fn(struct db_record *rec, void *priv)
return 0; return 0;
} }
static bool share_info_db_init(void) bool share_info_db_init(void)
{ {
const char *vstring = "INFO/version"; const char *vstring = "INFO/version";
int32 vers_id; int32 vers_id;

View File

@ -1218,6 +1218,15 @@ extern void build_options(bool screen);
return -1; 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 /* only start the background queue daemon if we are
running as a daemon -- bad things will happen if running as a daemon -- bad things will happen if
smbd is launched via inetd and we fork a copy of smbd is launched via inetd and we fork a copy of