ldb:tdb: Ensure we correctly decrement ltdb->read_lock_count
authorGarming Sam <garming@catalyst.net.nz>
Wed, 29 Mar 2017 23:03:17 +0000 (12:03 +1300)
committerStefan Metzmacher <metze@samba.org>
Sun, 2 Jul 2017 15:35:19 +0000 (17:35 +0200)
If we do not do this, then we never take the all record lock, and instead do a lock
for every record as we go, which is very slow during a large search

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/ldb/ldb_tdb/ldb_tdb.c

index f470e023d190168752b4351132fd5f6c5a1f765b..ad15a5e70a549807caabe2be466ed7827977e25b 100644 (file)
@@ -119,6 +119,7 @@ int ltdb_unlock_read(struct ldb_module *module)
        struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
        if (ltdb->in_transaction == 0 && ltdb->read_lock_count == 1) {
                tdb_unlockall_read(ltdb->tdb);
+               ltdb->read_lock_count--;
                return 0;
        }
        ltdb->read_lock_count--;