From: Timo Sirainen Date: Thu, 22 May 2014 01:12:05 +0000 (-0700) Subject: lib-storage: Added mailbox_list_index_very_dirty_syncs setting. X-Git-Tag: 2.2.14.rc1~484 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53cc097d3f8cd789f3c8fa0dfdd02bcda776230e;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Added mailbox_list_index_very_dirty_syncs setting. This setting assumes that the mailbox list index is up to date and uses it without stat()ing backend mailbox files/dirs. (As a possible future TODO it might be useful to still do the stat()ing, but only rarely.) --- diff --git a/src/lib-storage/index/index-sync.c b/src/lib-storage/index/index-sync.c index 7478c80d8e..49a44b0b8d 100644 --- a/src/lib-storage/index/index-sync.c +++ b/src/lib-storage/index/index-sync.c @@ -517,6 +517,8 @@ int index_storage_list_index_has_changed(struct mailbox *box, /* doesn't exist / not synced */ return 1; } + if (box->storage->set->mailbox_list_index_very_dirty_syncs) + return 0; ret = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX, &dir); if (ret < 0) diff --git a/src/lib-storage/index/maildir/maildir-sync-index.c b/src/lib-storage/index/maildir/maildir-sync-index.c index 007da6621a..830e224626 100644 --- a/src/lib-storage/index/maildir/maildir-sync-index.c +++ b/src/lib-storage/index/maildir/maildir-sync-index.c @@ -715,10 +715,8 @@ int maildir_list_index_has_changed(struct mailbox *box, int ret; ret = index_storage_list_index_has_changed(box, list_view, seq); - if (ret != 0) + if (ret != 0 || box->storage->set->mailbox_list_index_very_dirty_syncs) return ret; - if (mbox->storage->set->maildir_very_dirty_syncs) - return 0; ext_id = maildir_list_get_ext_id(mbox, list_view); mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged); diff --git a/src/lib-storage/index/mbox/mbox-sync-list-index.c b/src/lib-storage/index/mbox/mbox-sync-list-index.c index 0df68f1cf4..133ddbec90 100644 --- a/src/lib-storage/index/mbox/mbox-sync-list-index.c +++ b/src/lib-storage/index/mbox/mbox-sync-list-index.c @@ -32,7 +32,7 @@ int mbox_list_index_has_changed(struct mailbox *box, int ret; ret = index_storage_list_index_has_changed(box, list_view, seq); - if (ret != 0) + if (ret != 0 || box->storage->set->mailbox_list_index_very_dirty_syncs) return ret; ext_id = mbox_list_get_ext_id(mbox, list_view); diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index 6108e773e1..db5068d841 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -47,6 +47,7 @@ static const struct setting_define mail_storage_setting_defines[] = { DEF(SET_BOOL, mail_nfs_storage), DEF(SET_BOOL, mail_nfs_index), DEF(SET_BOOL, mailbox_list_index), + DEF(SET_BOOL, mailbox_list_index_very_dirty_syncs), DEF(SET_BOOL, mail_debug), DEF(SET_BOOL, mail_full_filesystem_access), DEF(SET_BOOL, maildir_stat_dirs), @@ -84,6 +85,7 @@ const struct mail_storage_settings mail_storage_default_settings = { .mail_nfs_storage = FALSE, .mail_nfs_index = FALSE, .mailbox_list_index = FALSE, + .mailbox_list_index_very_dirty_syncs = FALSE, .mail_debug = FALSE, .mail_full_filesystem_access = FALSE, .maildir_stat_dirs = FALSE, diff --git a/src/lib-storage/mail-storage-settings.h b/src/lib-storage/mail-storage-settings.h index 7c5e52b742..6e25533582 100644 --- a/src/lib-storage/mail-storage-settings.h +++ b/src/lib-storage/mail-storage-settings.h @@ -32,6 +32,7 @@ struct mail_storage_settings { bool mail_nfs_storage; bool mail_nfs_index; bool mailbox_list_index; + bool mailbox_list_index_very_dirty_syncs; bool mail_debug; bool mail_full_filesystem_access; bool maildir_stat_dirs;