dovecot-2.2: lib-storage: mail_transaction_commit_changes.change...
dovecot at dovecot.org
dovecot at dovecot.org
Sun May 20 03:26:24 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/3e9f91d8b2af
changeset: 14254:3e9f91d8b2af
user: Timo Sirainen <tss at iki.fi>
date: Fri Mar 02 14:36:13 2012 +0200
description:
lib-storage: mail_transaction_commit_changes.changed=TRUE only when something actually changed.
diffstat:
src/lib-storage/index/index-transaction.c | 8 ++++++++
src/lib-storage/index/maildir/maildir-mail.c | 1 +
src/lib-storage/mail-storage-private.h | 2 ++
src/lib-storage/mail-storage.h | 3 +++
4 files changed, 14 insertions(+), 0 deletions(-)
diffs (65 lines):
diff -r 91e035840dc6 -r 3e9f91d8b2af src/lib-storage/index/index-transaction.c
--- a/src/lib-storage/index/index-transaction.c Fri Mar 02 14:33:41 2012 +0200
+++ b/src/lib-storage/index/index-transaction.c Fri Mar 02 14:36:13 2012 +0200
@@ -21,10 +21,15 @@
MAIL_STORAGE_CONTEXT(index_trans);
int ret = 0;
+ if (t->nontransactional_changes)
+ t->changes->changed = TRUE;
+
if (t->save_ctx != NULL) {
if (t->box->v.transaction_save_commit_pre(t->save_ctx) < 0) {
t->save_ctx = NULL;
ret = -1;
+ } else {
+ t->changes->changed = TRUE;
}
}
@@ -35,6 +40,9 @@
if (t->super.commit(index_trans, result_r) < 0) {
mail_storage_set_index_error(t->box);
ret = -1;
+ } else if (result_r->commit_size > 0) {
+ /* something was written to the transaction log */
+ t->changes->changed = TRUE;
}
}
diff -r 91e035840dc6 -r 3e9f91d8b2af src/lib-storage/index/maildir/maildir-mail.c
--- a/src/lib-storage/index/maildir/maildir-mail.c Fri Mar 02 14:33:41 2012 +0200
+++ b/src/lib-storage/index/maildir/maildir-mail.c Fri Mar 02 14:36:13 2012 +0200
@@ -593,6 +593,7 @@
uidl = "";
}
+ _mail->transaction->nontransactional_changes = TRUE;
maildir_uidlist_set_ext(mbox->uidlist, _mail->uid,
MAILDIR_UIDLIST_REC_EXT_POP3_UIDL, uidl);
}
diff -r 91e035840dc6 -r 3e9f91d8b2af src/lib-storage/mail-storage-private.h
--- a/src/lib-storage/mail-storage-private.h Fri Mar 02 14:33:41 2012 +0200
+++ b/src/lib-storage/mail-storage-private.h Fri Mar 02 14:36:13 2012 +0200
@@ -395,6 +395,8 @@
struct mailbox_transaction_stats stats;
/* Set to TRUE to update stats_* fields */
unsigned int stats_track:1;
+ /* We've done some non-transactional (e.g. dovecot-uidlist updates) */
+ unsigned int nontransactional_changes:1;
};
union mail_search_module_context {
diff -r 91e035840dc6 -r 3e9f91d8b2af src/lib-storage/mail-storage.h
--- a/src/lib-storage/mail-storage.h Fri Mar 02 14:33:41 2012 +0200
+++ b/src/lib-storage/mail-storage.h Fri Mar 02 14:36:13 2012 +0200
@@ -265,6 +265,9 @@
/* number of modseq changes that couldn't be changed as requested */
unsigned int ignored_modseq_changes;
+
+ /* TRUE if anything actually changed with this commit */
+ bool changed;
};
struct mailbox_sync_rec {
More information about the dovecot-cvs
mailing list