changeset 14243:ba2b4f8a1bb1

mailbox list indexes: Avoid unnecessary refresh flag writes.
author Timo Sirainen <tss@iki.fi>
date Tue, 28 Feb 2012 06:52:43 +0200
parents 54aeb3853bae
children bdc881838b00
files src/lib-storage/list/mailbox-list-index-status.c src/lib-storage/list/mailbox-list-index-sync.c src/lib-storage/list/mailbox-list-index.c src/lib-storage/list/mailbox-list-index.h
diffstat 4 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-index-status.c	Tue Feb 28 05:14:00 2012 +0200
+++ b/src/lib-storage/list/mailbox-list-index-status.c	Tue Feb 28 06:52:43 2012 +0200
@@ -289,6 +289,8 @@
 	struct mailbox_status status;
 	uint32_t seq, seq1, seq2;
 
+	(void)mailbox_list_index_refresh(box->list);
+
 	node = mailbox_list_index_lookup(box->list, box->name);
 	if (node == NULL) {
 		mailbox_list_index_refresh_later(box->list);
--- a/src/lib-storage/list/mailbox-list-index-sync.c	Tue Feb 28 05:14:00 2012 +0200
+++ b/src/lib-storage/list/mailbox-list-index-sync.c	Tue Feb 28 06:52:43 2012 +0200
@@ -301,7 +301,7 @@
 		T_BEGIN {
 			mailbox_list_index_sync_names(&sync_ctx);
 		} T_END;
-	} else {
+	} else if (mailbox_list_index_need_refresh(ilist, sync_ctx.view)) {
 		/* we're synced, reset refresh flag */
 		struct mailbox_list_index_header new_hdr;
 
--- a/src/lib-storage/list/mailbox-list-index.c	Tue Feb 28 05:14:00 2012 +0200
+++ b/src/lib-storage/list/mailbox-list-index.c	Tue Feb 28 06:52:43 2012 +0200
@@ -197,9 +197,8 @@
 	return 0;
 }
 
-static bool
-mailbox_list_index_need_refresh(struct mailbox_list_index *ilist,
-				struct mail_index_view *view)
+bool mailbox_list_index_need_refresh(struct mailbox_list_index *ilist,
+				     struct mail_index_view *view)
 {
 	const struct mailbox_list_index_header *hdr;
 	const void *data;
--- a/src/lib-storage/list/mailbox-list-index.h	Tue Feb 28 05:14:00 2012 +0200
+++ b/src/lib-storage/list/mailbox-list-index.h	Tue Feb 28 06:52:43 2012 +0200
@@ -124,6 +124,8 @@
 struct mailbox_list_index_node *
 mailbox_list_index_lookup(struct mailbox_list *list, const char *name);
 
+bool mailbox_list_index_need_refresh(struct mailbox_list_index *ilist,
+				     struct mail_index_view *view);
 int mailbox_list_index_refresh(struct mailbox_list *list);
 void mailbox_list_index_refresh_later(struct mailbox_list *list);