tdb: use tdb_nest_lock() for active lock.
[ccan] / ccan / tdb / tdb_private.h
index b211662c4b867d05744703598e36e3d09f35be5b..fe68d5116303630259fc9c31379035d77a8d046f 100644 (file)
@@ -183,7 +183,7 @@ struct tdb_header {
 };
 
 struct tdb_lock_type {
-       int list;
+       uint32_t off;
        uint32_t count;
        uint32_t ltype;
 };
@@ -241,7 +241,6 @@ struct tdb_context {
        struct tdb_transaction *transaction;
        int page_size;
        int max_dead_records;
-       int transaction_lock_count;
 #ifdef TDB_TRACE
        int tracefd;
 #endif
@@ -256,12 +255,19 @@ int tdb_munmap(struct tdb_context *tdb);
 void tdb_mmap(struct tdb_context *tdb);
 int tdb_lock(struct tdb_context *tdb, int list, int ltype);
 int tdb_lock_nonblock(struct tdb_context *tdb, int list, int ltype);
+int tdb_nest_lock(struct tdb_context *tdb, uint32_t offset, int ltype,
+                 enum tdb_lock_flags flags);
+int tdb_nest_unlock(struct tdb_context *tdb, uint32_t offset, int ltype,
+                   bool mark_lock);
+bool tdb_have_locks(struct tdb_context *tdb);
 int tdb_unlock(struct tdb_context *tdb, int list, int ltype);
 int tdb_brlock(struct tdb_context *tdb,
               int rw_type, tdb_off_t offset, size_t len,
               enum tdb_lock_flags flags);
 int tdb_brunlock(struct tdb_context *tdb,
                 int rw_type, tdb_off_t offset, size_t len);
+bool tdb_have_extra_locks(struct tdb_context *tdb);
+void tdb_release_extra_locks(struct tdb_context *tdb);
 int tdb_transaction_lock(struct tdb_context *tdb, int ltype);
 int tdb_transaction_unlock(struct tdb_context *tdb, int ltype);
 int tdb_brlock_upgrade(struct tdb_context *tdb, tdb_off_t offset, size_t len);