X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb%2Ftraverse.c;h=d8b15aff4aa39f22f76fd6080e8e251404be4d75;hp=3159b014a22283f71ebbdb5978d5a7322839805a;hb=43ae196c43d739ee06dbe31e0032f1b5fe811e3b;hpb=41391dd9a73e1aa8bb8193cf6335542c703f20e9 diff --git a/ccan/tdb/traverse.c b/ccan/tdb/traverse.c index 3159b014..d8b15aff 100644 --- a/ccan/tdb/traverse.c +++ b/ccan/tdb/traverse.c @@ -211,7 +211,7 @@ int tdb_traverse_read(struct tdb_context *tdb, /* we need to get a read lock on the transaction lock here to cope with the lock ordering semantics of solaris10 */ - if (tdb->traverse_read == 0 && tdb_transaction_lock(tdb, F_RDLCK)) { + if (tdb_transaction_lock(tdb, F_RDLCK)) { return -1; } @@ -220,9 +220,7 @@ int tdb_traverse_read(struct tdb_context *tdb, ret = tdb_traverse_internal(tdb, fn, private_data, &tl); tdb->traverse_read--; - if (tdb->traverse_read == 0) { - tdb_transaction_unlock(tdb); - } + tdb_transaction_unlock(tdb); return ret; } @@ -244,8 +242,7 @@ int tdb_traverse(struct tdb_context *tdb, return tdb_traverse_read(tdb, fn, private_data); } - /* Nested traversals: transaction lock doesn't nest. */ - if (tdb->traverse_write == 0 && tdb_transaction_lock(tdb, F_WRLCK)) { + if (tdb_transaction_lock(tdb, F_WRLCK)) { return -1; } @@ -254,9 +251,7 @@ int tdb_traverse(struct tdb_context *tdb, ret = tdb_traverse_internal(tdb, fn, private_data, &tl); tdb->traverse_write--; - if (tdb->traverse_write == 0) { - tdb_transaction_unlock(tdb); - } + tdb_transaction_unlock(tdb); return ret; }