struct tdb_used_record u;
struct tdb_free_record f;
struct tdb_recovery_record r;
struct tdb_used_record u;
struct tdb_free_record f;
struct tdb_recovery_record r;
- p = tdb_get(tdb, off, &pad, sizeof(pad.f));
- if (!p)
+ if (tdb_read_convert(tdb, off, &rec, sizeof(rec.f)) == -1)
- if (p->r.magic == TDB_RECOVERY_INVALID_MAGIC
- || p->r.magic == 0x4343434343434343ULL) {
- p = tdb_get(tdb, off, &pad, sizeof(pad.r));
- if (!p)
+ if (rec.r.magic == TDB_RECOVERY_INVALID_MAGIC
+ || rec.r.magic == 0x4343434343434343ULL) {
+ if (tdb_read_convert(tdb, off, &rec, sizeof(rec.r)))
tdb->log(tdb, TDB_DEBUG_ERROR,
tdb->log_priv,
"tdb_check: invalid dead space"
tdb->log(tdb, TDB_DEBUG_ERROR,
tdb->log_priv,
"tdb_check: invalid dead space"
- } else if (p->r.magic == TDB_RECOVERY_MAGIC) {
- p = tdb_get(tdb, off, &pad, sizeof(pad.r));
- if (!p)
+ } else if (rec.r.magic == TDB_RECOVERY_MAGIC) {
+ if (tdb_read_convert(tdb, off, &rec, sizeof(rec.r)))
return false;
if (recovery != off) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
return false;
if (recovery != off) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: invalid recovery length"
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: invalid recovery length"
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: invalid old EOF"
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: invalid old EOF"
- len = sizeof(p->r) + p->r.max_len;
- } else if (frec_magic(&p->f) == TDB_FREE_MAGIC
- || frec_magic(&p->f) == TDB_COALESCING_MAGIC) {
- len = sizeof(p->u) + frec_len(&p->f);
+ len = sizeof(rec.r) + rec.r.max_len;
+ } else if (frec_magic(&rec.f) == TDB_FREE_MAGIC
+ || frec_magic(&rec.f) == TDB_COALESCING_MAGIC) {
+ len = sizeof(rec.u) + frec_len(&rec.f);
if (off + len > tdb->map_size) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: free overlength %llu"
if (off + len > tdb->map_size) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: free overlength %llu"
&& !append(free, num_free, off))
return false;
} else {
uint64_t klen, dlen, extra;
/* This record is used! */
&& !append(free, num_free, off))
return false;
} else {
uint64_t klen, dlen, extra;
/* This record is used! */
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: Bad magic 0x%llx"
" at offset %llu\n",
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: Bad magic 0x%llx"
" at offset %llu\n",
- klen = rec_key_length(&p->u);
- dlen = rec_data_length(&p->u);
- extra = rec_extra_padding(&p->u);
+ klen = rec_key_length(&rec.u);
+ dlen = rec_data_length(&rec.u);
+ extra = rec_extra_padding(&rec.u);
if (off + len > tdb->map_size) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: used overlength %llu"
if (off + len > tdb->map_size) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: used overlength %llu"
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: too short record %llu at"
" %llu\n",
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"tdb_check: too short record %llu at"
" %llu\n",