mirror of
https://github.com/samba-team/samba.git
synced 2025-03-03 12:58:35 +03:00
add a "stat cache" boolean smb.conf option. (defaults to on)
I think we need this so we can rule out stat cache bugs when dealing with bug reports. If we ask a user to disable the stat cache and the problem persists then we know it isn't a stat cache bug. The stat cache code is sufficiently complicated that it can be pretty hard to tell if it is causing problems or not.
This commit is contained in:
parent
c96b5fde5a
commit
c83f3775cd
@ -926,6 +926,7 @@ BOOL lp_unix_password_sync(void);
|
||||
BOOL lp_passwd_chat_debug(void);
|
||||
BOOL lp_ole_locking_compat(void);
|
||||
BOOL lp_nt_smb_support(void);
|
||||
BOOL lp_stat_cache(void);
|
||||
int lp_os_level(void);
|
||||
int lp_max_ttl(void);
|
||||
int lp_max_wins_ttl(void);
|
||||
|
@ -228,6 +228,7 @@ typedef struct
|
||||
BOOL bOleLockingCompat;
|
||||
BOOL bTimestampLogs;
|
||||
BOOL bNTSmbSupport;
|
||||
BOOL bStatCache;
|
||||
} global;
|
||||
|
||||
static global Globals;
|
||||
@ -643,6 +644,7 @@ static struct parm_struct parm_table[] =
|
||||
{"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_GLOBAL},
|
||||
{"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_GLOBAL},
|
||||
{"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_GLOBAL},
|
||||
{"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, 0},
|
||||
|
||||
{"Domain Options", P_SEP, P_SEPARATOR},
|
||||
{"domain sid", P_USTRING, P_GLOBAL, &Globals.szDomainSID, NULL, NULL, 0},
|
||||
@ -850,6 +852,7 @@ static void init_globals(void)
|
||||
Globals.bPasswdChatDebug = False;
|
||||
Globals.bOleLockingCompat = True;
|
||||
Globals.bNTSmbSupport = True; /* Do NT SMB's by default. */
|
||||
Globals.bStatCache = True; /* use stat cache by default */
|
||||
|
||||
#ifdef WITH_LDAP
|
||||
/* default values for ldap */
|
||||
@ -1135,6 +1138,7 @@ FN_GLOBAL_BOOL(lp_unix_password_sync,&Globals.bUnixPasswdSync)
|
||||
FN_GLOBAL_BOOL(lp_passwd_chat_debug,&Globals.bPasswdChatDebug)
|
||||
FN_GLOBAL_BOOL(lp_ole_locking_compat,&Globals.bOleLockingCompat)
|
||||
FN_GLOBAL_BOOL(lp_nt_smb_support,&Globals.bNTSmbSupport)
|
||||
FN_GLOBAL_BOOL(lp_stat_cache,&Globals.bStatCache)
|
||||
|
||||
FN_GLOBAL_INTEGER(lp_os_level,&Globals.os_level)
|
||||
FN_GLOBAL_INTEGER(lp_max_ttl,&Globals.max_ttl)
|
||||
|
@ -150,7 +150,11 @@ static void stat_cache_add( char *full_orig_name, char *orig_translated_path)
|
||||
stat_cache_entry *scp;
|
||||
pstring orig_name;
|
||||
pstring translated_path;
|
||||
int namelen = strlen(orig_translated_path);
|
||||
int namelen;
|
||||
|
||||
if (!lp_stat_cache()) return;
|
||||
|
||||
namelen = strlen(orig_translated_path);
|
||||
|
||||
/*
|
||||
* Don't cache trivial valid directory entries.
|
||||
@ -235,8 +239,12 @@ static BOOL stat_cache_lookup( char *name, char *dirpath, char **start, SMB_STRU
|
||||
{
|
||||
stat_cache_entry *scp;
|
||||
stat_cache_entry *longest_hit = NULL;
|
||||
int namelen = strlen(name);
|
||||
int namelen;
|
||||
|
||||
if (!lp_stat_cache()) return False;
|
||||
|
||||
namelen = strlen(name);
|
||||
|
||||
*start = name;
|
||||
global_stat_cache_lookups++;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user