tdb->log = null_log_fn;
tdb->log_priv = NULL;
tdb->transaction = NULL;
+ tdb->stats = NULL;
tdb_hash_init(tdb);
tdb_io_init(tdb);
tdb_lock_init(tdb);
case TDB_ATTRIBUTE_SEED:
seed = &attr->seed;
break;
+ case TDB_ATTRIBUTE_STATS:
+ tdb->stats = &attr->stats;
+ /* They have stats we don't know about? Tell them. */
+ if (tdb->stats->size > sizeof(attr->stats))
+ tdb->stats->size = sizeof(attr->stats);
+ break;
default:
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_open: unknown attribute type %u\n",
/* We didn't like the existing one: remove it. */
if (old_off) {
+ add_stat(tdb, frees, 1);
add_free_record(tdb, old_off,
sizeof(struct tdb_used_record)
+ key.dsize + old_room);
goto unlock_err;
/* Free the deleted entry. */
+ add_stat(tdb, frees, 1);
if (add_free_record(tdb, off,
sizeof(struct tdb_used_record)
+ rec_key_length(&rec)