- for (i = 0; i < sizeof(buckets)/sizeof(buckets[0]); i++) {
- buckets[i] = tally_new(HISTO_HEIGHT);
- if (!buckets[i]) {
- tdb->ecode = TDB_ERR_OOM;
- goto unlock;
- }
- }
-
- for (off = sizeof(struct tdb_header);
- off < tdb->map_size - 1;
- off += len) {
- uint64_t bucketlen[BUCKETS_FOR_ZONE(63)+1] = { 0 };
- len = summarize_zone(tdb, off, zones, hashes, freet, keys,
- data, extra, uncoal, bucketlen,
- &num_buckets);
- if (len == TDB_OFF_ERR)
- goto unlock;
- for (i = 0; i < num_buckets; i++)
- tally_add(buckets[i], bucketlen[i]);
- if (num_buckets > max_bucket)
- max_bucket = num_buckets;
- total_buckets += num_buckets;
- }
+ if (!summarize(tdb, hashes, ftables, freet, keys, data, extra, uncoal,
+ buckets, chains))
+ goto unlock;