Rev 639: added a way to disable idmap_cache.c. It breaks clustering and I need a way to test without it in http://samba.org/~tridge/3_0-ctdb

tridge at samba.org tridge at samba.org
Sat Oct 6 04:15:21 GMT 2007


------------------------------------------------------------
revno: 639
revision-id: tridge at samba.org-20071006041519-eg23dpcn79ippxcl
parent: tridge at samba.org-20071006011935-r09gcqwh35695exw
committer: Andrew Tridgell <tridge at samba.org>
branch nick: s3-ctdb-tridge
timestamp: Sat 2007-10-06 14:15:19 +1000
message:
  added a way to disable idmap_cache.c. It breaks clustering and I need a way to test without it
modified:
  source/nsswitch/idmap_cache.c  idmap_cache.c-20070210173807-1wjifrbwaz6xnmgl-707
=== modified file 'source/nsswitch/idmap_cache.c'
--- a/source/nsswitch/idmap_cache.c	2007-04-18 23:22:20 +0000
+++ b/source/nsswitch/idmap_cache.c	2007-10-06 04:15:19 +0000
@@ -30,6 +30,7 @@
 
 struct idmap_cache_ctx {
 	TDB_CONTEXT *tdb;
+	BOOL enabled;
 };
 
 static int idmap_cache_destructor(struct idmap_cache_ctx *cache)
@@ -55,6 +56,11 @@
 		return NULL;
 	}
 
+	cache->enabled = lp_parm_bool(-1, "idmap", "cache", True);
+	if (!cache->enabled) {
+		return cache;
+	}
+
 	cache_fname = lock_path("idmap_cache.tdb");
 
 	DEBUG(10, ("Opening cache file at %s\n", cache_fname));
@@ -76,7 +82,7 @@
 	talloc_free(cache);
 }
 
-NTSTATUS idmap_cache_build_sidkey(TALLOC_CTX *ctx, char **sidkey, const struct id_map *id)
+static NTSTATUS idmap_cache_build_sidkey(TALLOC_CTX *ctx, char **sidkey, const struct id_map *id)
 {
 	*sidkey = talloc_asprintf(ctx, "IDMAP/SID/%s", sid_string_static(id->sid));
 	if ( ! *sidkey) {
@@ -87,7 +93,7 @@
 	return NT_STATUS_OK;
 }
 
-NTSTATUS idmap_cache_build_idkey(TALLOC_CTX *ctx, char **idkey, const struct id_map *id)
+static NTSTATUS idmap_cache_build_idkey(TALLOC_CTX *ctx, char **idkey, const struct id_map *id)
 {
 	*idkey = talloc_asprintf(ctx, "IDMAP/%s/%lu",
 				(id->xid.type==ID_TYPE_UID)?"UID":"GID",
@@ -109,6 +115,10 @@
 	char *idkey;
 	char *valstr;
 
+	if (!cache->enabled) {
+		return NT_STATUS_OK;
+	}
+
 	/* Don't cache lookups in the S-1-22-{1,2} domain */
 	if ( (id->xid.type == ID_TYPE_UID) && 
 	     sid_check_is_in_unix_users(id->sid) )
@@ -188,6 +198,10 @@
 	char *sidkey = NULL;
 	char *idkey = NULL;
 
+	if (!cache->enabled) {
+		return NT_STATUS_OK;
+	}
+
 	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
 	if (!NT_STATUS_IS_OK(ret)) return ret;
 
@@ -226,6 +240,10 @@
 	char *sidkey;
 	char *valstr;
 
+	if (!cache->enabled) {
+		return NT_STATUS_OK;
+	}
+
 	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
 	if (!NT_STATUS_IS_OK(ret)) return ret;
 
@@ -262,6 +280,10 @@
 	char *idkey;
 	char *valstr;
 
+	if (!cache->enabled) {
+		return NT_STATUS_OK;
+	}
+
 	ret = idmap_cache_build_idkey(cache, &idkey, id);
 	if (!NT_STATUS_IS_OK(ret)) return ret;
 
@@ -290,7 +312,7 @@
 	return ret;
 }
 
-NTSTATUS idmap_cache_fill_map(struct id_map *id, const char *value)
+static NTSTATUS idmap_cache_fill_map(struct id_map *id, const char *value)
 {
 	char *rem;
 
@@ -371,6 +393,10 @@
 
 	/* make sure it is marked as not mapped by default */
 	id->status = ID_UNKNOWN;
+
+	if (!cache->enabled) {
+		return NT_STATUS_NONE_MAPPED;
+	}
 	
 	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
 	if (!NT_STATUS_IS_OK(ret)) return ret;
@@ -466,6 +492,10 @@
 	/* make sure it is marked as unknown by default */
 	id->status = ID_UNKNOWN;
 	
+	if (!cache->enabled) {
+		return NT_STATUS_NONE_MAPPED;
+	}
+
 	ret = idmap_cache_build_idkey(cache, &idkey, id);
 	if (!NT_STATUS_IS_OK(ret)) return ret;
 



More information about the samba-cvs mailing list