X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Fsummary.c;h=52103ea6b5247672ef24f808a97a1a99f4153466;hb=06a5b1a852c207a5172922e39d8effab0dd17b91;hp=e7a291967cb034cda442b807ed563fc8c7c2b58e;hpb=46d8f62015fb8bf6fe173573a55ea3f6324cee0a;p=ccan diff --git a/ccan/tdb2/summary.c b/ccan/tdb2/summary.c index e7a29196..52103ea6 100644 --- a/ccan/tdb2/summary.c +++ b/ccan/tdb2/summary.c @@ -89,7 +89,7 @@ static tdb_len_t summarize_zone(struct tdb_context *tdb, tdb_off_t zone_off, p = tdb_get(tdb, off, &pad, sizeof(pad)); if (!p) return TDB_OFF_ERR; - if (frec_magic(&p->f) == TDB_FREE_MAGIC) { + if (rec_magic(&p->u) != TDB_MAGIC) { len = p->f.data_len; tally_add(free, len); bucketlen[size_to_bucket(frec_zone_bits(&p->f), len)]++; @@ -163,6 +163,8 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags) *bucketsg[BUCKETS_FOR_ZONE(63)+1] = { NULL }; char *ret = NULL; + zonesg = hashesg = freeg = keysg = datag = extrag = uncoalg = NULL; + if (tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, false) != 0) return NULL; @@ -222,9 +224,6 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags) HISTO_WIDTH, HISTO_HEIGHT); } - } else { - zonesg = hashesg = freeg = keysg = datag = extrag = uncoalg - = NULL; } /* 20 is max length of a %llu. */