dovecot-2.1: lib-storage: Mailbox list index's ext_id shouldn't ...
dovecot at dovecot.org
dovecot at dovecot.org
Sun Oct 2 18:31:29 EEST 2011
details: http://hg.dovecot.org/dovecot-2.1/rev/d9b0cd5b77b5
changeset: 13592:d9b0cd5b77b5
user: Timo Sirainen <tss at iki.fi>
date: Sun Oct 02 18:39:49 2011 +0300
description:
lib-storage: Mailbox list index's ext_id shouldn't be cached in mail_storage.
It's mailbox_list-specific, not mail_storage-specific. The easiest fix was
to just cache it into mailbox rather than create a new index_mailbox_list.
diffstat:
src/lib-storage/index/index-storage.c | 1 +
src/lib-storage/index/index-storage.h | 1 +
src/lib-storage/index/index-sync.c | 24 ++++++++++-----------
src/lib-storage/index/maildir/maildir-storage.c | 2 +-
src/lib-storage/index/maildir/maildir-storage.h | 3 +-
src/lib-storage/index/maildir/maildir-sync-index.c | 22 +++++++++-----------
src/lib-storage/mail-storage-private.h | 1 -
7 files changed, 25 insertions(+), 29 deletions(-)
diffs (188 lines):
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/index/index-storage.c
--- a/src/lib-storage/index/index-storage.c Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/index/index-storage.c Sun Oct 02 18:39:49 2011 +0300
@@ -298,6 +298,7 @@
box->pool, sizeof(void *), 5);
ibox = p_new(box->pool, struct index_mailbox_context, 1);
+ ibox->list_index_sync_ext_id = (uint32_t)-1;
ibox->index_flags = MAIL_INDEX_OPEN_FLAG_CREATE |
mail_storage_settings_to_index_flags(box->storage->set);
ibox->next_lock_notify = time(NULL) + LOCK_NOTIFY_INTERVAL;
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/index/index-storage.h
--- a/src/lib-storage/index/index-storage.h Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/index/index-storage.h Sun Oct 02 18:39:49 2011 +0300
@@ -42,6 +42,7 @@
uint32_t vsize_hdr_ext_id;
time_t sync_last_check;
+ uint32_t list_index_sync_ext_id;
};
#define INDEX_STORAGE_CONTEXT(obj) \
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/index/index-sync.c
--- a/src/lib-storage/index/index-sync.c Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/index/index-sync.c Sun Oct 02 18:39:49 2011 +0300
@@ -443,18 +443,19 @@
return ret;
}
-static unsigned int
-index_storage_list_get_ext_id(struct mail_storage *storage,
- struct mail_index_view *view)
+static uint32_t
+index_list_get_ext_id(struct mailbox *box, struct mail_index_view *view)
{
- if (storage->list_sync_ext_id == (uint32_t)-1) {
- storage->list_sync_ext_id =
+ struct index_mailbox_context *ibox = INDEX_STORAGE_CONTEXT(box);
+
+ if (ibox->list_index_sync_ext_id == (uint32_t)-1) {
+ ibox->list_index_sync_ext_id =
mail_index_ext_register(mail_index_view_get_index(view),
"index sync", 0,
sizeof(struct index_storage_list_index_record),
sizeof(uint32_t));
}
- return storage->list_sync_ext_id;
+ return ibox->list_index_sync_ext_id;
}
int index_storage_list_index_has_changed(struct mailbox *box,
@@ -471,7 +472,7 @@
if (mail_index_is_in_memory(mail_index_view_get_index(list_view)))
return 1;
- ext_id = index_storage_list_get_ext_id(box->storage, list_view);
+ ext_id = index_list_get_ext_id(box, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
rec = data;
@@ -512,7 +513,7 @@
return;
/* get the current record */
- ext_id = index_storage_list_get_ext_id(box->storage, list_view);
+ ext_id = index_list_get_ext_id(box, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
if (expunged)
return;
@@ -532,9 +533,6 @@
new_rec.mtime = st.st_mtime & 0xffffffffU;
if (old_rec == NULL ||
- memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0) {
- mail_index_update_ext(trans, seq,
- box->storage->list_sync_ext_id,
- &new_rec, NULL);
- }
+ memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0)
+ mail_index_update_ext(trans, seq, ext_id, &new_rec, NULL);
}
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/index/maildir/maildir-storage.c
--- a/src/lib-storage/index/maildir/maildir-storage.c Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.c Sun Oct 02 18:39:49 2011 +0300
@@ -52,7 +52,6 @@
storage->set = mail_storage_get_driver_settings(_storage);
- storage->maildir_list_ext_id = (uint32_t)-1;
storage->temp_prefix = p_strdup(_storage->pool,
mailbox_list_get_temp_prefix(list));
@@ -275,6 +274,7 @@
mbox->box.storage = storage;
mbox->box.list = list;
mbox->box.mail_vfuncs = &maildir_mail_vfuncs;
+ mbox->maildir_list_index_ext_id = (uint32_t)-1;
index_storage_mailbox_alloc(&mbox->box, vname, flags,
MAILDIR_INDEX_PREFIX);
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/index/maildir/maildir-storage.h
--- a/src/lib-storage/index/maildir/maildir-storage.h Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.h Sun Oct 02 18:39:49 2011 +0300
@@ -67,8 +67,6 @@
const struct maildir_settings *set;
const char *temp_prefix;
-
- uint32_t maildir_list_ext_id;
};
struct maildir_mailbox {
@@ -87,6 +85,7 @@
struct maildir_index_header maildir_hdr;
uint32_t maildir_ext_id;
+ uint32_t maildir_list_index_ext_id;
unsigned int synced:1;
unsigned int syncing_commit:1;
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/index/maildir/maildir-sync-index.c
--- a/src/lib-storage/index/maildir/maildir-sync-index.c Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-sync-index.c Sun Oct 02 18:39:49 2011 +0300
@@ -685,17 +685,18 @@
return ret < 0 ? -1 : (full_rescan ? 0 : 1);
}
-static unsigned int maildir_list_get_ext_id(struct maildir_storage *storage,
- struct mail_index_view *view)
+static unsigned int
+maildir_list_get_ext_id(struct maildir_mailbox *mbox,
+ struct mail_index_view *view)
{
- if (storage->maildir_list_ext_id == (uint32_t)-1) {
- storage->maildir_list_ext_id =
+ if (mbox->maildir_list_index_ext_id == (uint32_t)-1) {
+ mbox->maildir_list_index_ext_id =
mail_index_ext_register(mail_index_view_get_index(view),
"maildir", 0,
sizeof(struct maildir_list_index_record),
sizeof(uint32_t));
}
- return storage->maildir_list_ext_id;
+ return mbox->maildir_list_index_ext_id;
}
int maildir_list_index_has_changed(struct mailbox *box,
@@ -713,7 +714,7 @@
if (mbox->storage->set->maildir_very_dirty_syncs)
return index_storage_list_index_has_changed(box, list_view, seq);
- ext_id = maildir_list_get_ext_id(mbox->storage, list_view);
+ ext_id = maildir_list_get_ext_id(mbox, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
rec = data;
@@ -768,7 +769,7 @@
/* get the current record */
list_view = mail_index_transaction_get_view(trans);
- ext_id = maildir_list_get_ext_id(mbox->storage, list_view);
+ ext_id = maildir_list_get_ext_id(mbox, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
if (expunged)
return;
@@ -784,9 +785,6 @@
}
if (old_rec == NULL ||
- memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0) {
- mail_index_update_ext(trans, seq,
- mbox->storage->maildir_list_ext_id,
- &new_rec, NULL);
- }
+ memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0)
+ mail_index_update_ext(trans, seq, ext_id, &new_rec, NULL);
}
diff -r 612b8a73ada7 -r d9b0cd5b77b5 src/lib-storage/mail-storage-private.h
--- a/src/lib-storage/mail-storage-private.h Sun Oct 02 18:30:32 2011 +0300
+++ b/src/lib-storage/mail-storage-private.h Sun Oct 02 18:39:49 2011 +0300
@@ -87,7 +87,6 @@
struct mail_user *user;
const char *temp_path_prefix;
const struct mail_storage_settings *set;
- uint32_t list_sync_ext_id;
enum mail_storage_flags flags;
More information about the dovecot-cvs
mailing list