Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5345:063c892d0439 HEAD
deleted_space wasn't being calculated, so the index was never compressed.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 16 Mar 2007 02:33:52 +0200 |
parents | da77f5dd7854 |
children | e39ce58a463b |
files | src/lib-index/mailbox-list-index-sync.c |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mailbox-list-index-sync.c Fri Mar 16 02:18:13 2007 +0200 +++ b/src/lib-index/mailbox-list-index-sync.c Fri Mar 16 02:33:52 2007 +0200 @@ -502,7 +502,7 @@ /* count how much space we need and how much we wasted for deleted records */ - nondeleted_count = 0; space_needed = 0; deleted_space = 0; + nondeleted_count = 0; space_needed = 0; sync_recs = array_get_modifiable(&sync_dir->records, &count); for (src = 0; src < count; src++) { if (sync_recs[src].seen || partial) { @@ -511,9 +511,6 @@ /* new record */ space_needed += strlen(sync_recs[src].name) + 1; } - } else { - deleted_space += sizeof(*new_recs) + - strlen(sync_recs[src].name) + 1; } } @@ -528,6 +525,7 @@ if (sync_dir->offset == 0) { dir = NULL; recs = NULL; + deleted_space = 0; } else { /* the offset should have been verified already to be valid */ i_assert(sync_dir->offset == offset_pos); @@ -535,6 +533,10 @@ dir = CONST_PTR_OFFSET(index->const_mmap_base, sync_dir->offset); recs = MAILBOX_LIST_RECORDS(dir); + + /* approximate deleted_space. some of the mailbox names will be + reused, but don't bother calculating them. */ + deleted_space = sizeof(*dir) + dir->dir_size; } new_dir = base; @@ -627,6 +629,7 @@ index->hdr = index->const_mmap_base; } + ctx->hdr.deleted_space += deleted_space; sync_dir->offset = base_offset; return 0; }