mirror of
https://github.com/samba-team/samba.git
synced 2025-02-28 01:58:17 +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 used to be commit c83f3775cd8a7aad13571926cdd5949a07538771)
This commit is contained in:
parent
fd33412fa0
commit
4fc5a74ffa
@ -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