diff options
Diffstat (limited to 'lib/tdb2/tdb1_lock.c')
-rw-r--r-- | lib/tdb2/tdb1_lock.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/lib/tdb2/tdb1_lock.c b/lib/tdb2/tdb1_lock.c index ee6aaf745e..a33c851c17 100644 --- a/lib/tdb2/tdb1_lock.c +++ b/lib/tdb2/tdb1_lock.c @@ -138,10 +138,6 @@ int tdb1_brlock(struct tdb1_context *tdb, return 0; } - if (flags & TDB1_LOCK_MARK_ONLY) { - return 0; - } - if ((rw_type == F_WRLCK) && (tdb->read_only || tdb->traverse_read)) { tdb->ecode = TDB1_ERR_RDONLY; return -1; @@ -344,7 +340,7 @@ static int tdb1_lock_list(struct tdb1_context *tdb, int list, int ltype, ret = tdb1_nest_lock(tdb, lock_offset(list), ltype, waitflag); if (ret == 0 && check && tdb1_needs_recovery(tdb)) { - tdb1_nest_unlock(tdb, lock_offset(list), ltype, false); + tdb1_nest_unlock(tdb, lock_offset(list), ltype); if (tdb1_lock_and_recover(tdb) == -1) { return -1; @@ -368,8 +364,7 @@ int tdb1_lock(struct tdb1_context *tdb, int list, int ltype) return ret; } -int tdb1_nest_unlock(struct tdb1_context *tdb, uint32_t offset, int ltype, - bool mark_lock) +int tdb1_nest_unlock(struct tdb1_context *tdb, uint32_t offset, int ltype) { int ret = -1; struct tdb1_lock_type *lck; @@ -401,11 +396,7 @@ int tdb1_nest_unlock(struct tdb1_context *tdb, uint32_t offset, int ltype, * anyway. */ - if (mark_lock) { - ret = 0; - } else { - ret = tdb1_brunlock(tdb, ltype, offset, 1); - } + ret = tdb1_brunlock(tdb, ltype, offset, 1); /* * Shrink the array by overwriting the element just unlocked with the @@ -440,7 +431,7 @@ int tdb1_unlock(struct tdb1_context *tdb, int list, int ltype) return -1; } - return tdb1_nest_unlock(tdb, lock_offset(list), ltype, false); + return tdb1_nest_unlock(tdb, lock_offset(list), ltype); } /* @@ -457,7 +448,7 @@ int tdb1_transaction_lock(struct tdb1_context *tdb, int ltype, */ int tdb1_transaction_unlock(struct tdb1_context *tdb, int ltype) { - return tdb1_nest_unlock(tdb, TDB1_TRANSACTION_LOCK, ltype, false); + return tdb1_nest_unlock(tdb, TDB1_TRANSACTION_LOCK, ltype); } /* Returns 0 if all done, -1 if error, 1 if ok. */ @@ -569,14 +560,7 @@ int tdb1_allrecord_lock(struct tdb1_context *tdb, int ltype, tdb->allrecord_lock.off = upgradable; if (tdb1_needs_recovery(tdb)) { - bool mark = flags & TDB1_LOCK_MARK_ONLY; - tdb1_allrecord_unlock(tdb, ltype, mark); - if (mark) { - tdb->ecode = TDB1_ERR_LOCK; - TDB1_LOG((tdb, TDB1_DEBUG_ERROR, - "tdb1_lockall_mark cannot do recovery\n")); - return -1; - } + tdb1_allrecord_unlock(tdb, ltype); if (tdb1_lock_and_recover(tdb) == -1) { return -1; } @@ -589,7 +573,7 @@ int tdb1_allrecord_lock(struct tdb1_context *tdb, int ltype, /* unlock entire db */ -int tdb1_allrecord_unlock(struct tdb1_context *tdb, int ltype, bool mark_lock) +int tdb1_allrecord_unlock(struct tdb1_context *tdb, int ltype) { /* There are no locks on read-only dbs */ if (tdb->read_only || tdb->traverse_read) { @@ -614,7 +598,7 @@ int tdb1_allrecord_unlock(struct tdb1_context *tdb, int ltype, bool mark_lock) return 0; } - if (!mark_lock && tdb1_brunlock(tdb, ltype, TDB1_FREELIST_TOP, 0)) { + if (tdb1_brunlock(tdb, ltype, TDB1_FREELIST_TOP, 0)) { TDB1_LOG((tdb, TDB1_DEBUG_ERROR, "tdb1_unlockall failed (%s)\n", strerror(errno))); return -1; } @@ -634,7 +618,7 @@ int tdb1_lockall(struct tdb1_context *tdb) /* unlock entire database with write lock */ int tdb1_unlockall(struct tdb1_context *tdb) { - return tdb1_allrecord_unlock(tdb, F_WRLCK, false); + return tdb1_allrecord_unlock(tdb, F_WRLCK); } /* lock entire database with read lock */ @@ -646,7 +630,7 @@ int tdb1_lockall_read(struct tdb1_context *tdb) /* unlock entire database with read lock */ int tdb1_unlockall_read(struct tdb1_context *tdb) { - return tdb1_allrecord_unlock(tdb, F_RDLCK, false); + return tdb1_allrecord_unlock(tdb, F_RDLCK); } /* lock/unlock one hash chain. This is meant to be used to reduce |