svn commit: samba r6240 - in branches/SAMBA_3_0/source: param smbd

jra at samba.org jra at samba.org
Thu Apr 7 20:59:37 GMT 2005


Author: jra
Date: 2005-04-07 20:59:37 +0000 (Thu, 07 Apr 2005)
New Revision: 6240

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6240

Log:
Fix for bug #2581. Add size limit (in kb) to stat cache.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/param/loadparm.c
   branches/SAMBA_3_0/source/smbd/statcache.c


Changeset:
Modified: branches/SAMBA_3_0/source/param/loadparm.c
===================================================================
--- branches/SAMBA_3_0/source/param/loadparm.c	2005-04-07 20:59:35 UTC (rev 6239)
+++ branches/SAMBA_3_0/source/param/loadparm.c	2005-04-07 20:59:37 UTC (rev 6240)
@@ -281,6 +281,7 @@
 	BOOL bNTPipeSupport;
 	BOOL bNTStatusSupport;
 	BOOL bStatCache;
+	int iMaxStatCacheSize;
 	BOOL bKernelOplocks;
 	BOOL bAllowTrustedDomains;
 	BOOL bLanmanAuth;
@@ -1033,6 +1034,7 @@
 	{"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, 
 	{"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, 
 	{"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_DEPRECATED }, 
+	{"max stat cache size", P_INTEGER, P_GLOBAL, &Globals.iMaxStatCacheSize, NULL, NULL, FLAG_ADVANCED}, 
 	{"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, FLAG_ADVANCED}, 
 	{"store dos attributes", P_BOOL, P_LOCAL, &sDefault.bStoreDosAttributes, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL}, 
 
@@ -1462,6 +1464,7 @@
 	Globals.bNTPipeSupport = True;	/* Do NT pipes by default. */
 	Globals.bNTStatusSupport = True; /* Use NT status by default. */
 	Globals.bStatCache = True;	/* use stat cache by default */
+	Globals.iMaxStatCacheSize = 0;	/* unlimited size in kb by default. */
 	Globals.restrict_anonymous = 0;
 	Globals.bClientLanManAuth = True;	/* Do use the LanMan hash if it is available */
 	Globals.bClientPlaintextAuth = True;	/* Do use a plaintext password if is requested by the server */
@@ -1814,6 +1817,7 @@
 FN_GLOBAL_BOOL(lp_nt_pipe_support, &Globals.bNTPipeSupport)
 FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport)
 FN_GLOBAL_BOOL(lp_stat_cache, &Globals.bStatCache)
+FN_GLOBAL_INTEGER(lp_max_stat_cache_size, &Globals.iMaxStatCacheSize)
 FN_GLOBAL_BOOL(lp_allow_trusted_domains, &Globals.bAllowTrustedDomains)
 FN_GLOBAL_INTEGER(lp_restrict_anonymous, &Globals.restrict_anonymous)
 FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth)

Modified: branches/SAMBA_3_0/source/smbd/statcache.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/statcache.c	2005-04-07 20:59:35 UTC (rev 6239)
+++ branches/SAMBA_3_0/source/smbd/statcache.c	2005-04-07 20:59:37 UTC (rev 6240)
@@ -47,10 +47,15 @@
 	TDB_DATA data_val;
 	char *original_path;
 	size_t original_path_length;
+	size_t sc_size = lp_max_stat_cache_size();
 
 	if (!lp_stat_cache())
 		return;
 
+	if (sc_size && (sc_size*1024 > tdb_stat_cache->map_size)) {
+		reset_stat_cache();
+	}
+
 	ZERO_STRUCT(data_val);
 
 	/*



More information about the samba-cvs mailing list