X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Ftdb1_transaction.c;fp=ccan%2Ftdb2%2Ftdb1_transaction.c;h=b09a2b3c10c157c5afbba0fb2c3d2a0f4b22abba;hb=444fade529f68eb2b0aebbc8de442478c5c6f916;hp=43e99024ce091b70492f0929207849cd9fb36ce2;hpb=39f55294799c6443c0ad7bef09f1c113cf89d295;p=ccan diff --git a/ccan/tdb2/tdb1_transaction.c b/ccan/tdb2/tdb1_transaction.c index 43e99024..b09a2b3c 100644 --- a/ccan/tdb2/tdb1_transaction.c +++ b/ccan/tdb2/tdb1_transaction.c @@ -421,8 +421,7 @@ static const struct tdb1_methods transaction1_methods = { start a tdb transaction. No token is returned, as only a single transaction is allowed to be pending per tdb1_context */ -static int _tdb1_transaction_start(struct tdb1_context *tdb, - enum tdb1_lock_flags lockflags) +static int _tdb1_transaction_start(struct tdb1_context *tdb) { /* some sanity checks */ if (tdb->read_only || (tdb->flags & TDB1_INTERNAL) || tdb->traverse_read) { @@ -474,12 +473,9 @@ static int _tdb1_transaction_start(struct tdb1_context *tdb, /* get the transaction write lock. This is a blocking lock. As discussed with Volker, there are a number of ways we could make this async, which we will probably do in the future */ - if (tdb1_transaction_lock(tdb, F_WRLCK, lockflags) == -1) { + if (tdb1_transaction_lock(tdb, F_WRLCK, TDB1_LOCK_WAIT) == -1) { SAFE_FREE(tdb->transaction->blocks); SAFE_FREE(tdb->transaction); - if ((lockflags & TDB1_LOCK_WAIT) == 0) { - tdb->ecode = TDB1_ERR_NOLOCK; - } return -1; } @@ -518,7 +514,7 @@ static int _tdb1_transaction_start(struct tdb1_context *tdb, return 0; fail: - tdb1_allrecord_unlock(tdb, F_RDLCK, false); + tdb1_allrecord_unlock(tdb, F_RDLCK); fail_allrecord_lock: tdb1_transaction_unlock(tdb, F_WRLCK); SAFE_FREE(tdb->transaction->blocks); @@ -529,7 +525,7 @@ fail_allrecord_lock: int tdb1_transaction_start(struct tdb1_context *tdb) { - return _tdb1_transaction_start(tdb, TDB1_LOCK_WAIT); + return _tdb1_transaction_start(tdb); } /*