Browse Source

tdb2: allow multiple chain locks.

It's probably not a good idea, because it's a recipe for deadlocks if
anyone else grabs any *other* two chainlocks, or the allrecord lock,
but SAMBA definitely does it, so allow it as TDB1 does.
Rusty Russell 15 years ago
parent
commit
dc9da1e34f
1 changed files with 2 additions and 0 deletions
  1. 2 0
      ccan/tdb2/lock.c

+ 2 - 0
ccan/tdb2/lock.c

@@ -378,12 +378,14 @@ static enum TDB_ERROR tdb_nest_lock(struct tdb_context *tdb,
 		return TDB_SUCCESS;
 		return TDB_SUCCESS;
 	}
 	}
 
 
+#if 0
 	if (tdb->file->num_lockrecs
 	if (tdb->file->num_lockrecs
 	    && offset >= TDB_HASH_LOCK_START
 	    && offset >= TDB_HASH_LOCK_START
 	    && offset < TDB_HASH_LOCK_START + TDB_HASH_LOCK_RANGE) {
 	    && offset < TDB_HASH_LOCK_START + TDB_HASH_LOCK_RANGE) {
 		return tdb_logerr(tdb, TDB_ERR_LOCK, TDB_LOG_ERROR,
 		return tdb_logerr(tdb, TDB_ERR_LOCK, TDB_LOG_ERROR,
 				  "tdb_nest_lock: already have a hash lock?");
 				  "tdb_nest_lock: already have a hash lock?");
 	}
 	}
+#endif
 
 
 	new_lck = (struct tdb_lock *)realloc(
 	new_lck = (struct tdb_lock *)realloc(
 		tdb->file->lockrecs,
 		tdb->file->lockrecs,