From: Volker Lendecke Date: Tue, 23 Oct 2018 11:40:34 +0000 (+0200) Subject: tdb: Don't delete dead records in traverse X-Git-Tag: tdb-1.3.17~1129 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96f6768e05493bc47431fb954335349f56af822e;p=thirdparty%2Fsamba.git tdb: Don't delete dead records in traverse The next commit will change the handling of dead records, removing the "tdb_do_delete" function. As traverses should not happen in normal operations, dead records from them should be rare, and relying on traverses to remove them is a very bad idea IMHO. Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- diff --git a/lib/tdb/common/traverse.c b/lib/tdb/common/traverse.c index 7a1d567cc01..a9af1d4b824 100644 --- a/lib/tdb/common/traverse.c +++ b/lib/tdb/common/traverse.c @@ -96,7 +96,6 @@ static tdb_off_t tdb_next_lock(struct tdb_context *tdb, struct tdb_traverse_lock /* Iterate through chain */ while( tlock->off) { - tdb_off_t current; if (tdb_rec_read(tdb, tlock->off, rec) == -1) goto fail; @@ -114,12 +113,7 @@ static tdb_off_t tdb_next_lock(struct tdb_context *tdb, struct tdb_traverse_lock return tlock->off; } - /* Try to clean dead ones from old traverses */ - current = tlock->off; tlock->off = rec->next; - if (!(tdb->read_only || tdb->traverse_read) && - tdb_do_delete(tdb, current, rec) != 0) - goto fail; } tdb_unlock(tdb, tlock->list, tlock->lock_rw); want_next = 0;