Browse Source

tdb: cleanup: always grab allrecord lock to infinity.

We were previously inconsistent with our "global" lock: the
transaction code grabbed it from FREELIST_TOP to end of file, and the
rest of the code grabbed it from FREELIST_TOP to end of the hash
chains.  Change it to always grab to end of file for simplicity.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell 16 years ago
parent
commit
bbf2f9cef4
1 changed files with 3 additions and 7 deletions
  1. 3 7
      ccan/tdb/lock.c

+ 3 - 7
ccan/tdb/lock.c

@@ -449,9 +449,7 @@ static int _tdb_lockall(struct tdb_context *tdb, int ltype,
 		return -1;
 	}
 
-	if (tdb->methods->brlock(tdb, ltype,
-				 FREELIST_TOP, 4*tdb->header.hash_size,
-				 flags)) {
+	if (tdb->methods->brlock(tdb, ltype, FREELIST_TOP, 0, flags)) {
 		if (flags & TDB_LOCK_WAIT) {
 			TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_lockall failed (%s)\n", strerror(errno)));
 		}
@@ -486,8 +484,7 @@ static int _tdb_unlockall(struct tdb_context *tdb, int ltype, bool mark_lock)
 	}
 
 	if (!mark_lock &&
-	    tdb->methods->brunlock(tdb, ltype,
-				   FREELIST_TOP, 4*tdb->header.hash_size)) {
+	    tdb->methods->brunlock(tdb, ltype, FREELIST_TOP, 0)) {
 		TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_unlockall failed (%s)\n", strerror(errno)));
 		return -1;
 	}
@@ -688,8 +685,7 @@ void tdb_release_extra_locks(struct tdb_context *tdb)
 	unsigned int i, extra = 0;
 
 	if (tdb->allrecord_lock.count != 0) {
-		tdb_brunlock(tdb, tdb->allrecord_lock.ltype,
-			     FREELIST_TOP, 4*tdb->header.hash_size);
+		tdb_brunlock(tdb, tdb->allrecord_lock.ltype, FREELIST_TOP, 0);
 		tdb->allrecord_lock.count = 0;
 	}