]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add mail_cache_max_size setting
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 10 Feb 2020 15:58:13 +0000 (17:58 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 14 Feb 2020 08:42:53 +0000 (08:42 +0000)
src/lib-storage/index/index-storage.c
src/lib-storage/mail-storage-settings.c
src/lib-storage/mail-storage-settings.h

index 7f21e9f1cb3ad22cf4f7f8acc8547179700e6913..ee82c84cba323ad4fbcc80415a7bf4851d05cebc 100644 (file)
@@ -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,
index fe4c5027b90aed12734f435aa93d08c620c8cfbc..aaa0eeb1ea2621232fb851876eafcc9662dc7411 100644 (file)
@@ -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;
index 9c54a2678d7102b8b4e69d28a3d5d93bf0babbb1..b14bd7499f4b3d24820d316b0d6eaf10314c9991 100644 (file)
@@ -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;