dovecot-2.1: lib-storage: Allocate MAILBOX_METADATA_CACHE_FIELDS...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Apr 28 17:34:31 EEST 2012
details: http://hg.dovecot.org/dovecot-2.1/rev/3b4c336ed01b
changeset: 14488:3b4c336ed01b
user: Timo Sirainen <tss at iki.fi>
date: Sat Apr 28 17:33:34 2012 +0300
description:
lib-storage: Allocate MAILBOX_METADATA_CACHE_FIELDS from a new metadata mempool.
diffstat:
src/lib-storage/index/index-status.c | 12 +++++++++---
src/lib-storage/mail-storage-private.h | 2 +-
src/lib-storage/mail-storage.c | 5 +++++
3 files changed, 15 insertions(+), 4 deletions(-)
diffs (58 lines):
diff -r e8b80e0767ac -r 3b4c336ed01b src/lib-storage/index/index-status.c
--- a/src/lib-storage/index/index-status.c Thu Apr 26 00:26:58 2012 +0300
+++ b/src/lib-storage/index/index-status.c Sat Apr 28 17:33:34 2012 +0300
@@ -100,11 +100,17 @@
struct mailbox_cache_field *cf;
unsigned int i, count;
+ if (box->metadata_pool == NULL) {
+ box->metadata_pool =
+ pool_alloconly_create("mailbox metadata", 256);
+ }
+
fields = mail_cache_register_get_list(box->cache,
- pool_datastack_create(), &count);
+ box->metadata_pool, &count);
- cache_fields = t_new(ARRAY_TYPE(mailbox_cache_field), 1);
- t_array_init(cache_fields, count);
+ cache_fields = p_new(box->metadata_pool,
+ ARRAY_TYPE(mailbox_cache_field), 1);
+ p_array_init(cache_fields, box->metadata_pool, count);
for (i = 0; i < count; i++) {
dec = fields[i].decision & ~MAIL_CACHE_DECISION_FORCED;
if (dec != MAIL_CACHE_DECISION_NO) {
diff -r e8b80e0767ac -r 3b4c336ed01b src/lib-storage/mail-storage-private.h
--- a/src/lib-storage/mail-storage-private.h Thu Apr 26 00:26:58 2012 +0300
+++ b/src/lib-storage/mail-storage-private.h Sat Apr 28 17:33:34 2012 +0300
@@ -212,7 +212,7 @@
struct mailbox_vfuncs v, *vlast;
/* private: */
- pool_t pool;
+ pool_t pool, metadata_pool;
/* Linked list of all mailboxes in this storage */
struct mailbox *prev, *next;
diff -r e8b80e0767ac -r 3b4c336ed01b src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c Thu Apr 26 00:26:58 2012 +0300
+++ b/src/lib-storage/mail-storage.c Sat Apr 28 17:33:34 2012 +0300
@@ -989,6 +989,8 @@
DLLIST_REMOVE(&box->storage->mailboxes, box);
mail_storage_obj_unref(box->storage);
+ if (box->metadata_pool != NULL)
+ pool_unref(&box->metadata_pool);
pool_unref(&box->pool);
}
@@ -1282,6 +1284,9 @@
{
memset(metadata_r, 0, sizeof(*metadata_r));
+ if (box->metadata_pool != NULL)
+ p_clear(box->metadata_pool);
+
if (box->v.get_metadata(box, items, metadata_r) < 0)
return -1;
More information about the dovecot-cvs
mailing list