# HG changeset patch # User Timo Sirainen # Date 1103130115 -7200 # Node ID b31f48d152c46dcad5c146c35355d117d7b3642a # Parent 7ea6705240b321cba1be314f510d6b633205654b Added mbox_very_dirty_syncs setting. diff -r 7ea6705240b3 -r b31f48d152c4 dovecot-example.conf --- a/dovecot-example.conf Tue Dec 14 05:03:56 2004 +0200 +++ b/dovecot-example.conf Wed Dec 15 19:01:55 2004 +0200 @@ -346,6 +346,10 @@ # commands. #mbox_dirty_syncs = yes +# Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE, +# EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored. +#mbox_very_dirty_syncs = no + # Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK # commands and when closing the mailbox). This is especially useful for POP3 # where clients often delete all mails. The downside is that our changes diff -r 7ea6705240b3 -r b31f48d152c4 src/lib-storage/index/index-storage.h --- a/src/lib-storage/index/index-storage.h Tue Dec 14 05:03:56 2004 +0200 +++ b/src/lib-storage/index/index-storage.h Wed Dec 15 19:01:55 2004 +0200 @@ -102,6 +102,7 @@ unsigned int syncing_commit:1; unsigned int mbox_sync_dirty:1; unsigned int mbox_do_dirty_syncs:1; + unsigned int mbox_very_dirty_syncs:1; unsigned int mbox_save_md5:1; }; diff -r 7ea6705240b3 -r b31f48d152c4 src/lib-storage/index/mbox/mbox-storage.c --- a/src/lib-storage/index/mbox/mbox-storage.c Tue Dec 14 05:03:56 2004 +0200 +++ b/src/lib-storage/index/mbox/mbox-storage.c Wed Dec 15 19:01:55 2004 +0200 @@ -411,7 +411,9 @@ ibox->is_recent = mbox_mail_is_recent; ibox->mail_interface = &mbox_mail; - ibox->mbox_do_dirty_syncs = getenv("MBOX_DIRTY_SYNCS") != NULL; + ibox->mbox_very_dirty_syncs = getenv("MBOX_VERY_DIRTY_SYNCS") != NULL; + ibox->mbox_do_dirty_syncs = ibox->mbox_very_dirty_syncs || + getenv("MBOX_DIRTY_SYNCS") != NULL; ibox->md5hdr_ext_idx = mail_index_ext_register(ibox->index, "header-md5", 0, 16, 1); diff -r 7ea6705240b3 -r b31f48d152c4 src/lib-storage/index/mbox/mbox-sync.c --- a/src/lib-storage/index/mbox/mbox-sync.c Tue Dec 14 05:03:56 2004 +0200 +++ b/src/lib-storage/index/mbox/mbox-sync.c Wed Dec 15 19:01:55 2004 +0200 @@ -1459,7 +1459,8 @@ if ((flags & MAILBOX_SYNC_FLAG_FAST) == 0 || ibox->sync_last_check + MAILBOX_FULL_SYNC_INTERVAL <= ioloop_time) { - if ((flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0) + if ((flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0 && + !ibox->mbox_very_dirty_syncs) mbox_sync_flags |= MBOX_SYNC_UNDIRTY; if ((flags & MAILBOX_SYNC_FLAG_FULL_WRITE) != 0) mbox_sync_flags |= MBOX_SYNC_REWRITE; diff -r 7ea6705240b3 -r b31f48d152c4 src/lib-storage/index/mbox/mbox-transaction.c --- a/src/lib-storage/index/mbox/mbox-transaction.c Tue Dec 14 05:03:56 2004 +0200 +++ b/src/lib-storage/index/mbox/mbox-transaction.c Wed Dec 15 19:01:55 2004 +0200 @@ -45,7 +45,8 @@ if (ret == 0) { enum mbox_sync_flags mbox_sync_flags = MBOX_SYNC_LAST_COMMIT; - if ((flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0) + if ((flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0 && + !ibox->mbox_very_dirty_syncs) mbox_sync_flags |= MBOX_SYNC_UNDIRTY; if ((flags & MAILBOX_SYNC_FLAG_FULL_WRITE) != 0) mbox_sync_flags |= MBOX_SYNC_REWRITE; diff -r 7ea6705240b3 -r b31f48d152c4 src/master/mail-process.c --- a/src/master/mail-process.c Tue Dec 14 05:03:56 2004 +0200 +++ b/src/master/mail-process.c Wed Dec 15 19:01:55 2004 +0200 @@ -220,6 +220,8 @@ env_put("POP3_NO_FLAG_UPDATES=1"); if (set->mbox_dirty_syncs) env_put("MBOX_DIRTY_SYNCS=1"); + if (set->mbox_very_dirty_syncs) + env_put("MBOX_VERY_DIRTY_SYNCS=1"); if (set->mbox_lazy_writes) env_put("MBOX_LAZY_WRITES=1"); (void)umask(set->umask); diff -r 7ea6705240b3 -r b31f48d152c4 src/master/master-settings.c --- a/src/master/master-settings.c Tue Dec 14 05:03:56 2004 +0200 +++ b/src/master/master-settings.c Wed Dec 15 19:01:55 2004 +0200 @@ -106,6 +106,7 @@ DEF(SET_INT, mbox_lock_timeout), DEF(SET_INT, mbox_dotlock_change_timeout), DEF(SET_BOOL, mbox_dirty_syncs), + DEF(SET_BOOL, mbox_very_dirty_syncs), DEF(SET_BOOL, mbox_lazy_writes), DEF(SET_INT, umask), DEF(SET_BOOL, mail_drop_priv_before_exec), @@ -276,6 +277,7 @@ MEMBER(mbox_lock_timeout) 300, MEMBER(mbox_dotlock_change_timeout) 30, MEMBER(mbox_dirty_syncs) TRUE, + MEMBER(mbox_very_dirty_syncs) FALSE, MEMBER(mbox_lazy_writes) TRUE, MEMBER(umask) 0077, MEMBER(mail_drop_priv_before_exec) FALSE, diff -r 7ea6705240b3 -r b31f48d152c4 src/master/master-settings.h --- a/src/master/master-settings.h Tue Dec 14 05:03:56 2004 +0200 +++ b/src/master/master-settings.h Wed Dec 15 19:01:55 2004 +0200 @@ -77,6 +77,7 @@ unsigned int mbox_lock_timeout; unsigned int mbox_dotlock_change_timeout; int mbox_dirty_syncs; + int mbox_very_dirty_syncs; int mbox_lazy_writes; unsigned int umask; int mail_drop_priv_before_exec;