X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftransaction.c;h=2cab4655661768a80e44593211f152dd3c73175c;hp=01f0713a5af95f06fcce5c5fd6e49d3f2fe706ab;hb=2b5cb9bd6be4e61870ba7a400d1a9d91c5933371;hpb=b21004624683be5bf1d8f75e3b5be4e9618049ee diff --git a/ccan/tdb2/transaction.c b/ccan/tdb2/transaction.c index 01f0713a..2cab4655 100644 --- a/ccan/tdb2/transaction.c +++ b/ccan/tdb2/transaction.c @@ -53,13 +53,13 @@ - don't allow any locks to be held when a transaction starts, otherwise we can end up with deadlock (plus lack of lock nesting - in posix locks would mean the lock is lost) + in POSIX locks would mean the lock is lost) - if the caller gains a lock during the transaction but doesn't release it then fail the commit - allow for nested calls to tdb_transaction_start(), re-using the - existing transaction record. If the inner transaction is cancelled + existing transaction record. If the inner transaction is canceled then a subsequent commit will fail - keep a mirrored copy of the tdb hash chain heads to allow for the @@ -68,7 +68,7 @@ - allow callers to mix transaction and non-transaction use of tdb, although once a transaction is started then an exclusive lock is - gained until the transaction is committed or cancelled + gained until the transaction is committed or canceled - the commit stategy involves first saving away all modified data into a linearised buffer in the transaction recovery area, then @@ -297,7 +297,7 @@ fail: /* - write while in a transaction - this varient never expands the transaction blocks, it only + write while in a transaction - this variant never expands the transaction blocks, it only updates existing blocks. This means it cannot change the recovery size */ static void transaction_write_existing(struct tdb_context *tdb, tdb_off_t off, @@ -534,7 +534,7 @@ enum TDB_ERROR tdb_transaction_start(struct tdb_context *tdb) if (tdb_has_hash_locks(tdb)) { /* the caller must not have any locks when starting a transaction as otherwise we'll be screwed by lack - of nested locks in posix */ + of nested locks in POSIX */ return tdb_logerr(tdb, TDB_ERR_LOCK, TDB_LOG_USE_ERROR, "tdb_transaction_start: cannot start a" " transaction with locks held"); @@ -745,11 +745,12 @@ static void set_recovery_header(struct tdb_recovery_record *rec, static enum TDB_ERROR transaction_setup_recovery(struct tdb_context *tdb, tdb_off_t *magic_offset) { - tdb_len_t recovery_size; + /* Initialized for GCC's 4.4.5 overzealous uninitialized warnings. */ + tdb_len_t recovery_size = 0; + tdb_off_t recovery_offset = 0, recovery_max_size = 0; unsigned char *data, *p; const struct tdb_methods *methods = tdb->transaction->io_methods; struct tdb_recovery_record *rec; - tdb_off_t recovery_offset, recovery_max_size; tdb_off_t old_map_size = tdb->transaction->old_map_size; uint64_t magic, tailer; int i;