From 7bd0ab8692a994665b52d5680359e64866526fc1 Mon Sep 17 00:00:00 2001 From: franklahm Date: Mon, 21 Dec 2009 06:41:09 +0000 Subject: [PATCH] Set cachesize for rebuild db --- etc/cnid_dbd/cmd_dbd.c | 4 ++-- etc/cnid_dbd/cmd_dbd_scanvol.c | 8 ++++++-- etc/cnid_dbd/dbif.c | 16 ++++++++++++++-- etc/cnid_dbd/dbif.h | 7 ++++--- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/etc/cnid_dbd/cmd_dbd.c b/etc/cnid_dbd/cmd_dbd.c index 11d88d1b..78e5cd47 100644 --- a/etc/cnid_dbd/cmd_dbd.c +++ b/etc/cnid_dbd/cmd_dbd.c @@ -1,5 +1,5 @@ /* - $Id: cmd_dbd.c,v 1.20 2009-12-20 14:17:23 franklahm Exp $ + $Id: cmd_dbd.c,v 1.21 2009-12-21 06:41:09 franklahm Exp $ Copyright (c) 2009 Frank Lahm @@ -434,7 +434,7 @@ int main(int argc, char **argv) if (exclusive) dbd_log( LOGDEBUG, "Finished recovery."); - if (dbif_open(dbd, &db_param, rebuildindexes) < 0) { + if (dbif_open(dbd, NULL, rebuildindexes) < 0) { dbif_close(dbd); goto exit_failure; } diff --git a/etc/cnid_dbd/cmd_dbd_scanvol.c b/etc/cnid_dbd/cmd_dbd_scanvol.c index db3dfefc..53a81ae3 100644 --- a/etc/cnid_dbd/cmd_dbd_scanvol.c +++ b/etc/cnid_dbd/cmd_dbd_scanvol.c @@ -1,5 +1,5 @@ /* - $Id: cmd_dbd_scanvol.c,v 1.14 2009-12-10 17:40:25 franklahm Exp $ + $Id: cmd_dbd_scanvol.c,v 1.15 2009-12-21 06:41:09 franklahm Exp $ Copyright (c) 2009 Frank Lahm @@ -944,6 +944,10 @@ cleanup: int cmd_dbd_scanvol(DBD *dbd_ref, struct volinfo *volinfo, dbd_flags_t flags) { int ret = 0; + struct db_param db_param = { 0 }; + + /* Set cachesize for in-memory rebuild db */ + db_param.cachesize = 128 * 1024 * 1024; /* 128 MB */ /* Make it accessible for all funcs */ dbd = dbd_ref; @@ -964,7 +968,7 @@ int cmd_dbd_scanvol(DBD *dbd_ref, struct volinfo *volinfo, dbd_flags_t flags) /* open/create rebuild dbd, copy rootinfo key */ if (NULL == (dbd_rebuild = dbif_init(NULL, NULL))) return -1; - if (0 != (dbif_open(dbd_rebuild, NULL, 0))) + if (0 != (dbif_open(dbd_rebuild, &db_param, 0))) return -1; if (0 != (dbif_copy_rootinfokey(dbd, dbd_rebuild))) goto exit_cleanup; diff --git a/etc/cnid_dbd/dbif.c b/etc/cnid_dbd/dbif.c index 2dd56d43..d7f19bd9 100644 --- a/etc/cnid_dbd/dbif.c +++ b/etc/cnid_dbd/dbif.c @@ -1,5 +1,5 @@ /* - * $Id: dbif.c,v 1.18 2009-12-20 16:04:21 franklahm Exp $ + * $Id: dbif.c,v 1.19 2009-12-21 06:41:09 franklahm Exp $ * * Copyright (C) Joerg Lenneis 2003 * Copyright (C) Frank Lahm 2009 @@ -296,7 +296,7 @@ int dbif_env_open(DBD *dbd, struct db_param *dbp, uint32_t dbenv_oflags) } /* --------------- */ -int dbif_open(DBD *dbd, struct db_param *dbp _U_, int reindex) +int dbif_open(DBD *dbd, struct db_param *dbp, int reindex) { int ret, i, cwd; u_int32_t count; @@ -361,6 +361,18 @@ int dbif_open(DBD *dbd, struct db_param *dbp _U_, int reindex) } } + if ( ! dbd->db_env) { /* In memory db */ + if ((ret = dbd->db_table[i].db->set_cachesize(dbd->db_table[i].db, + 0, + dbp->cachesize, + 4)) /* split in 4 memory chunks */ + < 0) { + LOG(log_error, logtype_cnid, "error setting cachesize %u KB for database %s: %s", + dbp->cachesize / 1024, dbd->db_table[i].name, db_strerror(ret)); + return -1; + } + } + if (dbd->db_table[i].db->open(dbd->db_table[i].db, dbd->db_txn, dbd->db_filename, diff --git a/etc/cnid_dbd/dbif.h b/etc/cnid_dbd/dbif.h index 577ee844..c63f3021 100644 --- a/etc/cnid_dbd/dbif.h +++ b/etc/cnid_dbd/dbif.h @@ -1,5 +1,5 @@ /* - $Id: dbif.h,v 1.8 2009-09-03 08:35:15 franklahm Exp $ + $Id: dbif.h,v 1.9 2009-12-21 06:41:09 franklahm Exp $ Copyright (C) Joerg Lenneis 2003 Copyright (C) Frank Lahm 2009 @@ -18,8 +18,9 @@ Pass NULL to create an in-memory db. Note: the DBD type is NOT from BerkeleyDB ! We've defined it. 3. Call dbif_env_open to open an dbd environment if you called dbif_init - with a filename. - 4. Call dbif_open to finally open the CNID database itself + with a filename. Pass a db_param here for on-disk databases. + 4. Call dbif_open to finally open the CNID database itself. Pass db_param + here for in-memory database. Querying the CNID database -------------------------- -- 2.39.2