diff options
author | Volker Lendecke <vl@samba.org> | 2008-08-12 22:31:52 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2008-08-13 16:12:18 +0200 |
commit | ba0b188abb3f680ee0686f53a903d25fe363d83e (patch) | |
tree | 722cc91e06ad67e10244d203f0f8b0a074d90e67 /source/lib | |
parent | 377017b3a14140a8a74623c2fdf00299de441317 (diff) | |
download | samba-ba0b188abb3f680ee0686f53a903d25fe363d83e.tar.gz |
Attempt to fix bug 5684
With the ctdb checkin dde9f3f006 tdb optimized out write lock checks for
write-enabled transaction. Sadly, this also removed the possibility to ever
remove dead records left over from tdb_delete calls within a transaction.
Tridge, please check this! Did dde9f3f006 have any reason beyond performance
optimizations?
Thanks,
Volker
(cherry picked from commit 96d683d3ec1e95cddf9ec96326ebaf8e9cc2079c)
Diffstat (limited to 'source/lib')
-rw-r--r-- | source/lib/tdb/common/tdb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/source/lib/tdb/common/tdb.c b/source/lib/tdb/common/tdb.c index 767452c9b34..c7cec297f6c 100644 --- a/source/lib/tdb/common/tdb.c +++ b/source/lib/tdb/common/tdb.c @@ -243,7 +243,7 @@ int tdb_do_delete(struct tdb_context *tdb, tdb_off_t rec_ptr, struct list_struct if (tdb->read_only || tdb->traverse_read) return -1; - if (tdb->traverse_write != 0 || + if (((tdb->traverse_write != 0) && (!TDB_DEAD(rec))) || tdb_write_lock_record(tdb, rec_ptr) == -1) { /* Someone traversing here: mark it as dead */ rec->magic = TDB_DEAD_MAGIC; |