dovecot-2.0: maildir: Avoid unnecessary uidlist recreation durin...

dovecot at dovecot.org dovecot at dovecot.org
Tue Sep 7 18:32:20 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/c7e1c71c5ec5
changeset: 12082:c7e1c71c5ec5
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Sep 07 16:32:17 2010 +0100
description:
maildir: Avoid unnecessary uidlist recreation during mail delivery.

diffstat:

 src/lib-storage/index/maildir/maildir-uidlist.c |  6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diffs (37 lines):

diff -r 65b0e7b4eda9 -r c7e1c71c5ec5 src/lib-storage/index/maildir/maildir-uidlist.c
--- a/src/lib-storage/index/maildir/maildir-uidlist.c	Tue Sep 07 16:23:03 2010 +0100
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c	Tue Sep 07 16:32:17 2010 +0100
@@ -93,6 +93,7 @@
 	uint8_t mailbox_guid[MAIL_GUID_128_SIZE];
 
 	unsigned int recreate:1;
+	unsigned int recreate_on_change:1;
 	unsigned int initial_read:1;
 	unsigned int initial_hdr_read:1;
 	unsigned int retry_rewind:1;
@@ -778,7 +779,7 @@
                         ret = -1;
 
 		if (uidlist->unsorted) {
-			uidlist->recreate = TRUE;
+			uidlist->recreate_on_change = TRUE;
 			maildir_uidlist_records_sort_by_uid(uidlist);
 		}
 		if (uidlist->next_uid <= uidlist->prev_read_uid)
@@ -1453,6 +1454,7 @@
 		uidlist->fd_size = st.st_size;
 		uidlist->last_read_offset = st.st_size;
 		uidlist->recreate = FALSE;
+		uidlist->recreate_on_change = FALSE;
 		uidlist->have_mailbox_guid = TRUE;
 		maildir_uidlist_update_hdr(uidlist, &st);
 	}
@@ -1515,7 +1517,7 @@
 	struct stat st;
 	uoff_t file_size;
 
-	if (maildir_uidlist_want_recreate(ctx))
+	if (maildir_uidlist_want_recreate(ctx) || uidlist->recreate_on_change)
 		return maildir_uidlist_recreate(uidlist);
 
 	if (!uidlist->locked_refresh || uidlist->fd == -1) {


More information about the dovecot-cvs mailing list