X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftransaction.c;h=927c6299549169318259139937d0c0ecf6bd99cf;hp=53bcc21c62f45ae687f6a9c6876e015f9e297cf1;hb=04b2feefda59d3193ef500bfc8ea12ec4a4c0b55;hpb=5e8b9af5e7fe5f1ccac407873a3b782b8a629782 diff --git a/ccan/tdb2/transaction.c b/ccan/tdb2/transaction.c index 53bcc21c..927c6299 100644 --- a/ccan/tdb2/transaction.c +++ b/ccan/tdb2/transaction.c @@ -454,7 +454,6 @@ static void _tdb_transaction_cancel(struct tdb_context *tdb) tdb->methods = tdb->transaction->io_methods; tdb_transaction_unlock(tdb, F_WRLCK); - tdb_unlock_expand(tdb, F_WRLCK); if (tdb_has_open_lock(tdb)) tdb_unlock_open(tdb); @@ -516,10 +515,6 @@ int tdb_transaction_start(struct tdb_context *tdb) goto fail_allrecord_lock; } - if (tdb_lock_expand(tdb, F_WRLCK) != 0) { - goto fail_expand_lock; - } - /* make sure we know about any file expansions already done by anyone else */ tdb->methods->oob(tdb, tdb->map_size + 1, true); @@ -531,8 +526,6 @@ int tdb_transaction_start(struct tdb_context *tdb) tdb->methods = &transaction_methods; return 0; -fail_expand_lock: - tdb_allrecord_unlock(tdb, F_RDLCK); fail_allrecord_lock: tdb_transaction_unlock(tdb, F_WRLCK); SAFE_FREE(tdb->transaction->blocks); @@ -884,6 +877,7 @@ static int _tdb_transaction_prepare_commit(struct tdb_context *tdb) return -1; } + /* Since we have whole db locked, we don't need the expansion lock. */ if (!(tdb->flags & TDB_NOSYNC)) { /* write the recovery data to the end of the file */ if (transaction_setup_recovery(tdb, &tdb->transaction->magic_offset) == -1) {