From 2aed6a345561957d952dbe22557599e9c275a094 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 18 May 2010 07:05:20 +0000 Subject: [PATCH] fix quota calculations --- src/datastore/plugin_datastore_sqlite.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/datastore/plugin_datastore_sqlite.c b/src/datastore/plugin_datastore_sqlite.c index 1576cef00..6e20a7491 100644 --- a/src/datastore/plugin_datastore_sqlite.c +++ b/src/datastore/plugin_datastore_sqlite.c @@ -1613,11 +1613,17 @@ process_stat_done (void *cls, struct Plugin *plugin = cls; sqlite3_stmt *stmt; uint64_t pages; - uint64_t free_pages; + uint64_t page_size; plugin->stat_get = NULL; if (plugin->stats_worked == GNUNET_NO) { + CHECK (SQLITE_OK == + sq_prepare (plugin->dbh, + "VACUUM;", + &stmt)); + sqlite3_step (stmt); + sqlite3_finalize (stmt); CHECK (SQLITE_OK == sq_prepare (plugin->dbh, "PRAGMA page_count", @@ -1630,17 +1636,17 @@ process_stat_done (void *cls, sqlite3_finalize (stmt); CHECK (SQLITE_OK == sq_prepare (plugin->dbh, - "PRAGMA freelist_count", + "PRAGMA page_size", &stmt)); CHECK (SQLITE_ROW == sqlite3_step (stmt)); - free_pages = sqlite3_column_int64 (stmt, 0); + page_size = sqlite3_column_int64 (stmt, 0); sqlite3_finalize (stmt); GNUNET_log (GNUNET_ERROR_TYPE_INFO, - _("Using sqlite page utilization to estimate payload (%llu pages total, %llu free)\n"), + _("Using sqlite page utilization to estimate payload (%llu pages of size %llu bytes)\n"), (unsigned long long) pages, - (unsigned long long) free_pages); - plugin->payload = (pages - free_pages) * 4092LL; + (unsigned long long) page_size); + plugin->payload = pages * page_size; } } -- 2.25.1