Commit 0a97f2dc authored by Rusty Russell's avatar Rusty Russell

tdb: combine dead_space helper from summary.c and check.c

Remove code duplication, and allow unit tests (which #include both).
parent 6535bdee
...@@ -309,7 +309,7 @@ static bool tdb_check_free_record(struct tdb_context *tdb, ...@@ -309,7 +309,7 @@ static bool tdb_check_free_record(struct tdb_context *tdb,
} }
/* Slow, but should be very rare. */ /* Slow, but should be very rare. */
static size_t dead_space(struct tdb_context *tdb, tdb_off_t off) size_t tdb_dead_space(struct tdb_context *tdb, tdb_off_t off)
{ {
size_t len; size_t len;
...@@ -407,7 +407,7 @@ int tdb_check(struct tdb_context *tdb, ...@@ -407,7 +407,7 @@ int tdb_check(struct tdb_context *tdb,
found_recovery = true; found_recovery = true;
break; break;
} }
dead = dead_space(tdb, off); dead = tdb_dead_space(tdb, off);
if (dead < sizeof(rec)) if (dead < sizeof(rec))
goto corrupt; goto corrupt;
......
...@@ -37,21 +37,6 @@ ...@@ -37,21 +37,6 @@
#define HISTO_WIDTH 70 #define HISTO_WIDTH 70
#define HISTO_HEIGHT 20 #define HISTO_HEIGHT 20
/* Slow, but should be very rare. */
static size_t dead_space(struct tdb_context *tdb, tdb_off_t off)
{
size_t len;
for (len = 0; off + len < tdb->map_size; len++) {
char c;
if (tdb->methods->tdb_read(tdb, off, &c, 1, 0))
return 0;
if (c != 0 && c != 0x42)
break;
}
return len;
}
static size_t get_hash_length(struct tdb_context *tdb, unsigned int i) static size_t get_hash_length(struct tdb_context *tdb, unsigned int i)
{ {
tdb_off_t rec_ptr; tdb_off_t rec_ptr;
...@@ -126,7 +111,7 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags) ...@@ -126,7 +111,7 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags)
case TDB_RECOVERY_INVALID_MAGIC: case TDB_RECOVERY_INVALID_MAGIC:
case 0x42424242: case 0x42424242:
unc++; unc++;
rec.rec_len = dead_space(tdb, off) - sizeof(rec); rec.rec_len = tdb_dead_space(tdb, off) - sizeof(rec);
/* Fall through */ /* Fall through */
case TDB_DEAD_MAGIC: case TDB_DEAD_MAGIC:
tally_add(dead, rec.rec_len); tally_add(dead, rec.rec_len);
......
...@@ -304,4 +304,5 @@ int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, ...@@ -304,4 +304,5 @@ int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off,
void tdb_header_hash(struct tdb_context *tdb, void tdb_header_hash(struct tdb_context *tdb,
uint32_t *magic1_hash, uint32_t *magic2_hash); uint32_t *magic1_hash, uint32_t *magic2_hash);
unsigned int tdb_old_hash(TDB_DATA *key); unsigned int tdb_old_hash(TDB_DATA *key);
size_t tdb_dead_space(struct tdb_context *tdb, tdb_off_t off);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment