From: Howard Chu Date: Fri, 7 Dec 2012 21:19:36 +0000 (-0800) Subject: ITS#7467 add verbose freelist info X-Git-Tag: OPENLDAP_REL_ENG_2_4_34~90^2~2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e26fc734177ccc4da91d6bf79035a9dda354784a;p=openldap ITS#7467 add verbose freelist info --- diff --git a/libraries/liblmdb/mdb_stat.c b/libraries/liblmdb/mdb_stat.c index e9981f6016..13a24f9cbd 100644 --- a/libraries/liblmdb/mdb_stat.c +++ b/libraries/liblmdb/mdb_stat.c @@ -31,7 +31,7 @@ static void prstat(MDB_stat *ms) static void usage(char *prog) { - fprintf(stderr, "usage: %s dbpath [-e] [-f] [-n] [-a|-s subdb]\n", prog); + fprintf(stderr, "usage: %s dbpath [-e] [-f[f]] [-n] [-a|-s subdb]\n", prog); exit(EXIT_FAILURE); } @@ -122,7 +122,7 @@ int main(int argc, char *argv[]) if (freinfo) { MDB_cursor *cursor; - MDB_val data; + MDB_val key, data; size_t pages = 0, *iptr; printf("Freelist Status\n"); @@ -137,12 +137,20 @@ int main(int argc, char *argv[]) printf("mdb_stat failed, error %d %s\n", rc, mdb_strerror(rc)); goto txn_abort; } - while ((rc = mdb_cursor_get(cursor, NULL, &data, MDB_NEXT)) == 0) { + prstat(&mst); + while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) { iptr = data.mv_data; pages += *iptr; + if (freinfo > 1) { + size_t i, j; + j = *iptr++; + printf(" Transaction %zu, %zu pages\n", + *(size_t *)key.mv_data, j); + for (i=0; i