From 8786b50f48bc996b5cdf7c70a3b43f8cf4dc2863 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 10 Feb 2020 17:58:13 +0200 Subject: [PATCH] lib-storage: Add mail_cache_max_size setting --- src/lib-storage/index/index-storage.c | 1 + src/lib-storage/mail-storage-settings.c | 6 ++++++ src/lib-storage/mail-storage-settings.h | 1 + 3 files changed, 8 insertions(+) diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 7f21e9f1cb..ee82c84cba 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -272,6 +272,7 @@ int index_storage_mailbox_alloc_index(struct mailbox *box) .cache = { .unaccessed_field_drop_secs = set->mail_cache_unaccessed_field_drop, .record_max_size = set->mail_cache_record_max_size, + .max_size = set->mail_cache_max_size, .compress_min_size = set->mail_cache_compress_min_size, .compress_delete_percentage = set->mail_cache_compress_delete_percentage, .compress_continued_percentage = set->mail_cache_compress_continued_percentage, diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index fe4c5027b9..aaa0eeb1ea 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -46,6 +46,7 @@ static const struct setting_define mail_storage_setting_defines[] = { DEF(SET_UINT, mail_cache_min_mail_count), DEF(SET_TIME, mail_cache_unaccessed_field_drop), DEF(SET_SIZE, mail_cache_record_max_size), + DEF(SET_SIZE, mail_cache_max_size), DEF(SET_SIZE, mail_cache_compress_min_size), DEF(SET_UINT, mail_cache_compress_delete_percentage), DEF(SET_UINT, mail_cache_compress_continued_percentage), @@ -112,6 +113,7 @@ const struct mail_storage_settings mail_storage_default_settings = { .mail_cache_min_mail_count = 0, .mail_cache_unaccessed_field_drop = 60*60*24*30, .mail_cache_record_max_size = 64 * 1024, + .mail_cache_max_size = 1024 * 1024 * 1024, .mail_cache_compress_min_size = 32 * 1024, .mail_cache_compress_delete_percentage = 20, .mail_cache_compress_continued_percentage = 200, @@ -468,6 +470,10 @@ static bool mail_storage_settings_check(void *_set, pool_t pool, return FALSE; } + if (set->mail_cache_max_size > 1024 * 1024 * 1024) { + *error_r = "mail_cache_max_size can't be over 1 GB"; + return FALSE; + } if (set->mail_cache_compress_delete_percentage > 100) { *error_r = "mail_cache_compress_delete_percentage can't be over 100"; return FALSE; diff --git a/src/lib-storage/mail-storage-settings.h b/src/lib-storage/mail-storage-settings.h index 9c54a2678d..b14bd7499f 100644 --- a/src/lib-storage/mail-storage-settings.h +++ b/src/lib-storage/mail-storage-settings.h @@ -28,6 +28,7 @@ struct mail_storage_settings { unsigned int mail_cache_min_mail_count; unsigned int mail_cache_unaccessed_field_drop; uoff_t mail_cache_record_max_size; + uoff_t mail_cache_max_size; uoff_t mail_cache_compress_min_size; unsigned int mail_cache_compress_delete_percentage; unsigned int mail_cache_compress_continued_percentage; -- 2.47.3