summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/ldb_tdb/ldb_tdb.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-09-22 04:40:23 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:38:42 -0500
commitaf352b4664332416a49569618fb6a2ef4099be04 (patch)
treefb8ce2cda4409e3b5f3bf53f7f884d3fd6a399a2 /source4/lib/ldb/ldb_tdb/ldb_tdb.c
parent6fe9eee3c4dbd6fde48a80261f39081e659d2f55 (diff)
downloadsamba-af352b4664332416a49569618fb6a2ef4099be04.tar.gz
samba-af352b4664332416a49569618fb6a2ef4099be04.tar.bz2
samba-af352b4664332416a49569618fb6a2ef4099be04.zip
r10408: now that we are using tdb transactions we don't need any additional
locking code in the ldb_tdb backend, except for a single read lock during searches to ensure searches don't cross transaction boundaries The tdb transactions code would map these extra locks to noops anyway (as locking makes no sense inside a transaction), but the work in setting up the locking keys still costs something, and it makes the code needlessly complex (This used to be commit 1b8d368a6771360fb0626127c02b3eb95f3eae59)
Diffstat (limited to 'source4/lib/ldb/ldb_tdb/ldb_tdb.c')
-rw-r--r--source4/lib/ldb/ldb_tdb/ldb_tdb.c164
1 files changed, 0 insertions, 164 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
index a2faaa805f..d8a03c3f55 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
@@ -41,9 +41,6 @@
#include "ldb/include/ldb_private.h"
#include "ldb/ldb_tdb/ldb_tdb.h"
-#define LDBLOCK "@INT_LDBLOCK"
-
-
/*
form a TDB_DATA for a record key
caller frees
@@ -96,141 +93,6 @@ failed:
}
/*
- lock the database for write - currently a single lock is used
-*/
-static int ltdb_lock(struct ldb_module *module, const char *lockname)
-{
- struct ltdb_private *ltdb = module->private_data;
- struct ldb_dn *lock_dn;
- char *ldn;
- TDB_DATA key;
- int ret;
-
- if (lockname == NULL) {
- return -1;
- }
-
- ldn = talloc_asprintf(module->ldb, "%s_%s", LDBLOCK, lockname);
- if (ldn == NULL) {
- return -1;
- }
-
- lock_dn = ldb_dn_explode(module->ldb, ldn);
- if (lock_dn == NULL) {
- talloc_free(ldn);
- return -1;
- }
- talloc_free(ldn);
-
- key = ltdb_key(module, lock_dn);
- if (!key.dptr) {
- talloc_free(lock_dn);
- return -1;
- }
-
- ret = tdb_chainlock(ltdb->tdb, key);
-
- talloc_free(key.dptr);
- talloc_free(lock_dn);
-
- return ret;
-}
-
-/*
- unlock the database after a ltdb_lock()
-*/
-static int ltdb_unlock(struct ldb_module *module, const char *lockname)
-{
- struct ltdb_private *ltdb = module->private_data;
- struct ldb_dn *lock_dn;
- char *ldn;
- TDB_DATA key;
-
- if (lockname == NULL) {
- return -1;
- }
-
- ldn = talloc_asprintf(module->ldb, "%s_%s", LDBLOCK, lockname);
- if (ldn == NULL) {
- return -1;
- }
-
- lock_dn = ldb_dn_explode(module->ldb, ldn);
- if (lock_dn == NULL) {
- talloc_free(ldn);
- return -1;
- }
- talloc_free(ldn);
-
- key = ltdb_key(module, lock_dn);
- if (!key.dptr) {
- talloc_free(lock_dn);
- return -1;
- }
-
- tdb_chainunlock(ltdb->tdb, key);
-
- talloc_free(key.dptr);
- talloc_free(lock_dn);
-
- return 0;
-}
-
-
-/*
- lock the database for read - use by ltdb_search
-*/
-int ltdb_lock_read(struct ldb_module *module)
-{
- struct ltdb_private *ltdb = module->private_data;
- TDB_DATA key;
- struct ldb_dn *lock_dn;
- int ret;
-
- lock_dn = ldb_dn_explode(module, LDBLOCK);
- if (lock_dn == NULL) {
- return -1;
- }
-
- key = ltdb_key(module, lock_dn);
- if (!key.dptr) {
- talloc_free(lock_dn);
- return -1;
- }
- talloc_free(lock_dn);
-
- ret = tdb_chainlock_read(ltdb->tdb, key);
- talloc_free(key.dptr);
- return ret;
-}
-
-/*
- unlock the database after a ltdb_lock_read()
-*/
-int ltdb_unlock_read(struct ldb_module *module)
-{
- struct ltdb_private *ltdb = module->private_data;
- struct ldb_dn *lock_dn;
- TDB_DATA key;
-
- lock_dn = ldb_dn_explode(module, LDBLOCK);
- if (lock_dn == NULL) {
- return -1;
- }
-
- key = ltdb_key(module, lock_dn);
- if (!key.dptr) {
- talloc_free(lock_dn);
- return -1;
- }
- talloc_free(lock_dn);
-
- tdb_chainunlock_read(ltdb->tdb, key);
- talloc_free(key.dptr);
- return 0;
-}
-
-/*
check special dn's have valid attributes
currently only @ATTRIBUTES is checked
*/
@@ -335,12 +197,7 @@ static int ltdb_add(struct ldb_module *module, const struct ldb_message *msg)
return ret;
}
- if (ltdb_lock(module, LDBLOCK) != 0) {
- return LDB_ERR_OTHER;
- }
-
if (ltdb_cache_load(module) != 0) {
- ltdb_unlock(module, LDBLOCK);
return LDB_ERR_OTHER;
}
@@ -350,7 +207,6 @@ static int ltdb_add(struct ldb_module *module, const struct ldb_message *msg)
ltdb_modified(module, msg->dn);
}
- ltdb_unlock(module, LDBLOCK);
return ret;
}
@@ -386,10 +242,6 @@ static int ltdb_delete(struct ldb_module *module, const struct ldb_dn *dn)
struct ldb_message *msg = NULL;
int ret = LDB_ERR_OTHER;
- if (ltdb_lock(module, LDBLOCK) != 0) {
- return ret;
- }
-
if (ltdb_cache_load(module) != 0) {
goto failed;
}
@@ -421,12 +273,10 @@ static int ltdb_delete(struct ldb_module *module, const struct ldb_dn *dn)
ret = LDB_ERR_OTHER;
talloc_free(msg);
- ltdb_unlock(module, LDBLOCK);
return ret;
failed:
talloc_free(msg);
- ltdb_unlock(module, LDBLOCK);
return ret;
}
@@ -749,12 +599,7 @@ static int ltdb_modify(struct ldb_module *module, const struct ldb_message *msg)
return ret;
}
- if (ltdb_lock(module, LDBLOCK) != 0) {
- return -1;
- }
-
if (ltdb_cache_load(module) != 0) {
- ltdb_unlock(module, LDBLOCK);
return -1;
}
@@ -764,8 +609,6 @@ static int ltdb_modify(struct ldb_module *module, const struct ldb_message *msg)
ltdb_modified(module, msg->dn);
}
- ltdb_unlock(module, LDBLOCK);
-
return ret;
}
@@ -778,12 +621,7 @@ static int ltdb_rename(struct ldb_module *module, const struct ldb_dn *olddn, co
char *error_str;
int ret = LDB_ERR_OTHER;
- if (ltdb_lock(module, LDBLOCK) != 0) {
- return ret;
- }
-
if (ltdb_cache_load(module) != 0) {
- ltdb_unlock(module, LDBLOCK);
return ret;
}
@@ -821,13 +659,11 @@ static int ltdb_rename(struct ldb_module *module, const struct ldb_dn *olddn, co
ldb_set_errstring(module, error_str);
talloc_free(msg);
- ltdb_unlock(module, LDBLOCK);
return ret;
failed:
talloc_free(msg);
- ltdb_unlock(module, LDBLOCK);
return ret;
}