Lines Matching refs:tdb

43 static bool looks_like_valid_record(struct tdb_context *tdb,
60 if (rec->next > 0 && rec->next < TDB_DATA_START(tdb->hash_size))
63 if (tdb->methods->tdb_oob(tdb, rec->next, sizeof(*rec), 1))
67 key->dptr = tdb_alloc_read(tdb, off + sizeof(*rec), key->dsize);
71 hval = tdb->hash_fn(key);
105 static bool walk_record(struct tdb_context *tdb,
113 data.dptr = tdb_alloc_read(tdb,
117 if (tdb->ecode == TDB_ERR_OOM)
204 static void logging_suppressed(struct tdb_context *tdb,
209 _PUBLIC_ int tdb_rescue(struct tdb_context *tdb,
215 tdb_log_func oldlog = tdb->log.log_fn;
222 if (tdb->read_only || tdb->allrecord_lock.count != 0) {
225 if (tdb_lockall_read(tdb) == -1)
231 tdb->methods->tdb_oob(tdb, tdb->map_size, 1, 1);
234 tdb->log.log_fn = logging_suppressed;
237 for (off = TDB_DATA_START(tdb->hash_size);
238 off < tdb->map_size;
240 if (tdb->methods->tdb_read(tdb, off, &rec, sizeof(rec),
244 if (looks_like_valid_record(tdb, off, &rec, &key)) {
252 for (h = 0; h < 1+tdb->hash_size; h++) {
256 if (tdb_ofs_read(tdb, FREELIST_TOP + h*sizeof(tdb_off_t),
261 if (tdb->methods->tdb_read(tdb, off, &rec, sizeof(rec),
283 tdb_ofs_read(tdb, slow_off, &slow_off);
291 if (tdb_ofs_read(tdb, TDB_RECOVERY_HEAD, &off) == 0 && off != 0) {
292 if (tdb->methods->tdb_read(tdb, off, &rec, sizeof(rec),
310 if (!walk_record(tdb, &found.arr[i+num],
324 if (!walk_record(tdb, &found.arr[j],
334 tdb->log.log_fn = oldlog;
336 tdb_unlockall_read(tdb);
341 tdb->log.log_fn = oldlog;
342 tdb->ecode = TDB_ERR_OOM;
343 TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_rescue: failed allocating\n"));
346 tdb_unlockall_read(tdb);