X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fdatabase.c;h=4bd685d66f6d6d752c531f73eb31a815f5f4c132;hp=fcb82d2e5eecadbb6a155edfc258f4aac42a701a;hb=dbee11a35d5d217f356279fa400d7f9deab86cb0;hpb=5a3c48d2513dab2cec3c32b37e804a891613a909 diff --git a/citadel/database.c b/citadel/database.c index fcb82d2e5..4bd685d66 100644 --- a/citadel/database.c +++ b/citadel/database.c @@ -861,6 +861,25 @@ void cdb_trunc(int cdb) } +/* + * compact (defragment) the database , possibly returning space back to the underlying filesystem + */ +void cdb_compact(void) +{ + int ret; + int i; + + syslog(LOG_DEBUG, "db: cdb_compact() started"); + for (i = 0; i < MAXCDB; i++) { + syslog(LOG_DEBUG, "db: compacting database %d", i); + ret = dbp[i]->compact(dbp[i], NULL, NULL, NULL, NULL, DB_FREE_SPACE, NULL); + if (ret) { + syslog(LOG_ERR, "db: compact: %s", db_strerror(ret)); + } + } + syslog(LOG_DEBUG, "db: cdb_compact() finished"); +} + // Has an item already been seen (is it in the CDB_USETABLE) ? // Returns 0 if it hasn't, 1 if it has