From: Timo Sirainen Date: Tue, 21 Jun 2016 18:21:03 +0000 (+0300) Subject: lib-storage: Added quick parameter to list_index_has_changed() X-Git-Tag: 2.3.0.rc1~3432 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aa47c9bd1d1fc70cd699c49fd1ca92dbc7615953;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Added quick parameter to list_index_has_changed() --- diff --git a/src/lib-storage/index/index-storage.h b/src/lib-storage/index/index-storage.h index 277cef094b..ab1575ebd6 100644 --- a/src/lib-storage/index/index-storage.h +++ b/src/lib-storage/index/index-storage.h @@ -164,7 +164,7 @@ bool index_keyword_array_cmp(const ARRAY_TYPE(keyword_indexes) *k1, int index_storage_list_index_has_changed(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq); + uint32_t seq, bool quick); enum index_storage_list_change index_storage_list_index_has_changed_full(struct mailbox *box, struct mail_index_view *list_view, diff --git a/src/lib-storage/index/index-sync.c b/src/lib-storage/index/index-sync.c index 6721d162ad..ba965ef8cc 100644 --- a/src/lib-storage/index/index-sync.c +++ b/src/lib-storage/index/index-sync.c @@ -459,7 +459,7 @@ index_storage_list_index_has_changed_full(struct mailbox *box, int index_storage_list_index_has_changed(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq) + uint32_t seq, bool quick ATTR_UNUSED) { switch (index_storage_list_index_has_changed_full(box, list_view, seq)) { case INDEX_STORAGE_LIST_CHANGE_ERROR: diff --git a/src/lib-storage/index/maildir/maildir-sync-index.c b/src/lib-storage/index/maildir/maildir-sync-index.c index 01ae4909b4..4a318f8bff 100644 --- a/src/lib-storage/index/maildir/maildir-sync-index.c +++ b/src/lib-storage/index/maildir/maildir-sync-index.c @@ -702,7 +702,7 @@ maildir_list_get_ext_id(struct maildir_mailbox *mbox, int maildir_list_index_has_changed(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq) + uint32_t seq, bool quick) { struct maildir_mailbox *mbox = (struct maildir_mailbox *)box; const struct maildir_list_index_record *rec; @@ -713,7 +713,7 @@ int maildir_list_index_has_changed(struct mailbox *box, bool expunged; int ret; - ret = index_storage_list_index_has_changed(box, list_view, seq); + ret = index_storage_list_index_has_changed(box, list_view, seq, quick); if (ret != 0 || box->storage->set->mailbox_list_index_very_dirty_syncs) return ret; if (mbox->storage->set->maildir_very_dirty_syncs) { diff --git a/src/lib-storage/index/maildir/maildir-sync.h b/src/lib-storage/index/maildir/maildir-sync.h index 5ec0ee48e4..b059fbd659 100644 --- a/src/lib-storage/index/maildir/maildir-sync.h +++ b/src/lib-storage/index/maildir/maildir-sync.h @@ -50,7 +50,7 @@ int maildir_sync_lookup(struct maildir_mailbox *mbox, uint32_t uid, int maildir_list_index_has_changed(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq); + uint32_t seq, bool quick); void maildir_list_index_update_sync(struct mailbox *box, struct mail_index_transaction *trans, uint32_t seq); diff --git a/src/lib-storage/index/mbox/mbox-sync-list-index.c b/src/lib-storage/index/mbox/mbox-sync-list-index.c index 5524733fdb..c11f1a6055 100644 --- a/src/lib-storage/index/mbox/mbox-sync-list-index.c +++ b/src/lib-storage/index/mbox/mbox-sync-list-index.c @@ -20,7 +20,7 @@ mbox_list_get_ext_id(struct mbox_mailbox *mbox, int mbox_list_index_has_changed(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq) + uint32_t seq, bool quick) { struct mbox_mailbox *mbox = (struct mbox_mailbox *)box; const struct mbox_list_index_record *rec; @@ -31,7 +31,7 @@ int mbox_list_index_has_changed(struct mailbox *box, bool expunged; int ret; - ret = index_storage_list_index_has_changed(box, list_view, seq); + ret = index_storage_list_index_has_changed(box, list_view, seq, quick); if (ret != 0 || box->storage->set->mailbox_list_index_very_dirty_syncs) return ret; diff --git a/src/lib-storage/index/mbox/mbox-sync-private.h b/src/lib-storage/index/mbox/mbox-sync-private.h index 9d991acf01..e25f26975d 100644 --- a/src/lib-storage/index/mbox/mbox-sync-private.h +++ b/src/lib-storage/index/mbox/mbox-sync-private.h @@ -185,7 +185,7 @@ int mbox_sync_get_guid(struct mbox_mailbox *mbox); int mbox_list_index_has_changed(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq); + uint32_t seq, bool quick); void mbox_list_index_update_sync(struct mailbox *box, struct mail_index_transaction *trans, uint32_t seq); diff --git a/src/lib-storage/list/mailbox-list-index-status.c b/src/lib-storage/list/mailbox-list-index-status.c index 66d553cbb8..eab57a3625 100644 --- a/src/lib-storage/list/mailbox-list-index-status.c +++ b/src/lib-storage/list/mailbox-list-index-status.c @@ -60,7 +60,7 @@ index_list_open_view(struct mailbox *box, struct mail_index_view **view_r, ret = 1; } else T_BEGIN { ret = box->v.list_index_has_changed == NULL ? 0 : - box->v.list_index_has_changed(box, view, seq); + box->v.list_index_has_changed(box, view, seq, FALSE); } T_END; if (ret != 0) { @@ -787,7 +787,7 @@ void mailbox_list_index_status_set_info_flags(struct mailbox *box, uint32_t uid, ret = 1; } else T_BEGIN { ret = box->v.list_index_has_changed == NULL ? 0 : - box->v.list_index_has_changed(box, view, seq); + box->v.list_index_has_changed(box, view, seq, TRUE); } T_END; if (ret != 0) { diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index b32e722267..f330798db6 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -206,10 +206,11 @@ struct mailbox_vfuncs { int (*attribute_iter_deinit)(struct mailbox_attribute_iter *iter); /* Lookup sync extension record and figure out if it mailbox has - changed since. Returns 1 = yes, 0 = no, -1 = error. */ + changed since. Returns 1 = yes, 0 = no, -1 = error. if quick==TRUE, + return 1 if it's too costly to find out exactly. */ int (*list_index_has_changed)(struct mailbox *box, struct mail_index_view *list_view, - uint32_t seq); + uint32_t seq, bool quick); /* Update the sync extension record. */ void (*list_index_update_sync)(struct mailbox *box, struct mail_index_transaction *trans,