X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=ccan%2Ftdb2%2Fsummary.c;h=d279131d3eec65561a9e86c3bb6e80412e7aef9b;hb=850c5cfed46cd4f38df79783791969c7b30ad9da;hp=56d365883030dce6e85961022c7ac3d7f7e694aa;hpb=2491b65a6d10cd6ca1a3e05bf535eb0180047922;p=ccan diff --git a/ccan/tdb2/summary.c b/ccan/tdb2/summary.c index 56d36588..d279131d 100644 --- a/ccan/tdb2/summary.c +++ b/ccan/tdb2/summary.c @@ -1,7 +1,7 @@ - /* + /* Trivial Database 2: human-readable summary code Copyright (C) Rusty Russell 2010 - + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either @@ -38,7 +38,7 @@ static int count_hash(struct tdb_context *tdb, static bool summarize(struct tdb_context *tdb, struct tally *hashes, struct tally *ftables, - struct tally *free, + struct tally *fr, struct tally *keys, struct tally *data, struct tally *extra, @@ -69,7 +69,7 @@ static bool summarize(struct tdb_context *tdb, len = sizeof(p->r) + p->r.max_len; } else if (frec_magic(&p->f) == TDB_FREE_MAGIC) { len = frec_len(&p->f); - tally_add(free, len); + tally_add(fr, len); tally_add(buckets, size_to_bucket(len)); len += sizeof(p->u); unc++; @@ -152,13 +152,19 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags) *buckets, *chains; char *hashesg, *freeg, *keysg, *datag, *extrag, *uncoalg, *bucketsg; char *ret = NULL; + enum TDB_ERROR ecode; hashesg = freeg = keysg = datag = extrag = uncoalg = bucketsg = NULL; - if (tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, false) != 0) + ecode = tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, false); + if (ecode != TDB_SUCCESS) { + tdb->ecode = ecode; return NULL; + } - if (tdb_lock_expand(tdb, F_RDLCK) != 0) { + ecode = tdb_lock_expand(tdb, F_RDLCK); + if (ecode != TDB_SUCCESS) { + tdb->ecode = ecode; tdb_allrecord_unlock(tdb, F_RDLCK); return NULL; } @@ -175,7 +181,7 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags) chains = tally_new(HISTO_HEIGHT); if (!ftables || !hashes || !freet || !keys || !data || !extra || !uncoal || !buckets || !chains) { - tdb_logerr(tdb, TDB_ERR_OOM, TDB_DEBUG_ERROR, + tdb_logerr(tdb, TDB_ERR_OOM, TDB_LOG_ERROR, "tdb_summary: failed to allocate tally structures"); goto unlock; }