- bool finish = false;
-
- /* FIXME: Do we need to start at 0? */
- prev_bucket = tdb_lock_list(tdb, 0, ltype, TDB_LOCK_WAIT);
- if (prev_bucket != 0)
- return -1;
-
- num = (1ULL << tdb->header.v.hash_bits);
-
- for (i = tdb_find_nonzero_off(tdb, hash_off(tdb, 0), num);
- i != num && !finish;
- i += tdb_find_nonzero_off(tdb, hash_off(tdb, i), num - i)) {
- if (tdb_lock_list(tdb, i, ltype, TDB_LOCK_WAIT) != i)
- goto fail;
-
- off = tdb_read_off(tdb, hash_off(tdb, i));
- if (off == TDB_OFF_ERR) {
- tdb_unlock_list(tdb, i, ltype);
- goto fail;
- }