changeset 2967:b31f48d152c4 HEAD

Added mbox_very_dirty_syncs setting.
author Timo Sirainen <tss@iki.fi>
date Wed, 15 Dec 2004 19:01:55 +0200
parents 7ea6705240b3
children 2ab037df6cf3
files dovecot-example.conf src/lib-storage/index/index-storage.h src/lib-storage/index/mbox/mbox-storage.c src/lib-storage/index/mbox/mbox-sync.c src/lib-storage/index/mbox/mbox-transaction.c src/master/mail-process.c src/master/master-settings.c src/master/master-settings.h
diffstat 8 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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;
 };
 
--- 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);
--- 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;
--- 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;
--- 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);
--- 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,
--- 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;