summaryrefslogtreecommitdiff
path: root/source4/lib/tdb/common/open.c
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2007-03-06 10:11:15 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:49:18 -0500
commit0aebd296cd6834567509d0b100d486f1ef4d104e (patch)
treebc473b0d17e6f1abcad2e407870a5942b05c289b /source4/lib/tdb/common/open.c
parent0fa6e86b5799637ade610915ffb4c6443334bc8e (diff)
downloadsamba-0aebd296cd6834567509d0b100d486f1ef4d104e.tar.gz
samba-0aebd296cd6834567509d0b100d486f1ef4d104e.tar.bz2
samba-0aebd296cd6834567509d0b100d486f1ef4d104e.zip
r21722: Add the dead record functionality presented on samba-technical@samba.org. If
you do a tdb_set_max_dead(tdb, n), then for this tdb a delete operation will only mark a record as dead and re-use it if a new record is created. The parameter n allows for at most n dead records per hash chain. If this number is exceeded, all dead records are put on the central freelist. Volker (This used to be commit 98a27ab28a3cd554e370a9a0e3652f4dea8749e9)
Diffstat (limited to 'source4/lib/tdb/common/open.c')
-rw-r--r--source4/lib/tdb/common/open.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/source4/lib/tdb/common/open.c b/source4/lib/tdb/common/open.c
index 3d6e222b96..47e3258c09 100644
--- a/source4/lib/tdb/common/open.c
+++ b/source4/lib/tdb/common/open.c
@@ -263,6 +263,7 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
tdb->map_size = st.st_size;
tdb->device = st.st_dev;
tdb->inode = st.st_ino;
+ tdb->max_dead_records = 0;
tdb_mmap(tdb);
if (locked) {
if (tdb->methods->tdb_brlock(tdb, ACTIVE_LOCK, F_UNLCK, F_SETLK, 0, 1) == -1) {
@@ -321,6 +322,15 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
}
}
+/*
+ * Set the maximum number of dead records per hash chain
+ */
+
+void tdb_set_max_dead(struct tdb_context *tdb, int max_dead)
+{
+ tdb->max_dead_records = max_dead;
+}
+
/**
* Close a database.
*