Browse Source

tdb2: fix bogus error from tdb_unlockall() after fork in tdb1 backend.

We're always allowed to unlock after a fork; by setting the count to 0
before calling the generic unlock function we don't trigger the pid
check.
Rusty Russell 14 years ago
parent
commit
ba5bb8eae6
1 changed files with 3 additions and 3 deletions
  1. 3 3
      ccan/tdb2/tdb1_lock.c

+ 3 - 3
ccan/tdb2/tdb1_lock.c

@@ -384,15 +384,15 @@ int tdb1_allrecord_unlock(struct tdb_context *tdb, int ltype)
 		return 0;
 	}
 
+	tdb->file->allrecord_lock.count = 0;
+	tdb->file->allrecord_lock.ltype = 0;
+
 	if (tdb1_brunlock(tdb, ltype, TDB1_FREELIST_TOP, 0)) {
 		tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR,
 			   "tdb1_unlockall failed (%s)", strerror(errno));
 		return -1;
 	}
 
-	tdb->file->allrecord_lock.count = 0;
-	tdb->file->allrecord_lock.ltype = 0;
-
 	return 0;
 }