dovecot-2.0: lib-storage: Moved index transaction/view from inde...

dovecot at dovecot.org dovecot at dovecot.org
Fri Mar 19 15:13:27 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/0cf62ad4c7bf
changeset: 10946:0cf62ad4c7bf
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Mar 19 15:13:24 2010 +0200
description:
lib-storage: Moved index transaction/view from index_transaction to mailbox_transaction.

diffstat:

 src/lib-storage/index/cydir/cydir-save.c       |   4 +-
 src/lib-storage/index/dbox-multi/mdbox-save.c  |   8 +---
 src/lib-storage/index/dbox-single/sdbox-save.c |   4 +-
 src/lib-storage/index/index-mail.c             |  49 ++++++++++--------------
 src/lib-storage/index/index-search.c           |  16 +++----
 src/lib-storage/index/index-sort-string.c      |  14 +++----
 src/lib-storage/index/index-storage.h          |   2 -
 src/lib-storage/index/index-transaction.c      |  56 ++++++++++++---------------
 src/lib-storage/index/maildir/maildir-save.c   |   2 +-
 src/lib-storage/index/mbox/mbox-mail.c         |   9 ++--
 src/lib-storage/index/mbox/mbox-save.c         |   4 +-
 src/lib-storage/mail-storage-private.h         |   4 ++
 src/plugins/expire/expire-plugin.c             |   8 +--
 13 files changed, 77 insertions(+), 103 deletions(-)

diffs (truncated from 570 to 300 lines):

diff -r b13e01d82083 -r 0cf62ad4c7bf src/lib-storage/index/cydir/cydir-save.c
--- a/src/lib-storage/index/cydir/cydir-save.c	Thu Mar 18 03:41:22 2010 +0000
+++ b/src/lib-storage/index/cydir/cydir-save.c	Fri Mar 19 15:13:24 2010 +0200
@@ -58,8 +58,6 @@
 struct mail_save_context *
 cydir_save_alloc(struct mailbox_transaction_context *t)
 {
-	struct index_transaction_context *it =
-		(struct index_transaction_context *)t;
 	struct cydir_mailbox *mbox = (struct cydir_mailbox *)t->box;
 	struct cydir_save_context *ctx =
 		(struct cydir_save_context *)t->save_ctx;
@@ -70,7 +68,7 @@
 		ctx = i_new(struct cydir_save_context, 1);
 		ctx->ctx.transaction = t;
 		ctx->mbox = mbox;
-		ctx->trans = it->trans;
+		ctx->trans = t->itrans;
 		ctx->tmp_basename = cydir_generate_tmp_filename();
 		t->save_ctx = &ctx->ctx;
 	}
diff -r b13e01d82083 -r 0cf62ad4c7bf src/lib-storage/index/dbox-multi/mdbox-save.c
--- a/src/lib-storage/index/dbox-multi/mdbox-save.c	Thu Mar 18 03:41:22 2010 +0000
+++ b/src/lib-storage/index/dbox-multi/mdbox-save.c	Fri Mar 19 15:13:24 2010 +0200
@@ -45,8 +45,6 @@
 mdbox_copy_file_get_file(struct mailbox_transaction_context *t,
 			 uint32_t seq, uoff_t *offset_r)
 {
-	struct index_transaction_context *it =
-		(struct index_transaction_context *)t;
 	struct mdbox_save_context *ctx =
 		(struct mdbox_save_context *)t->save_ctx;
 	const struct mdbox_mail_index_record *rec;
@@ -54,7 +52,7 @@
 	bool expunged;
 	uint32_t file_id;
 
-	mail_index_lookup_ext(it->trans_view, seq, ctx->mbox->ext_id,
+	mail_index_lookup_ext(t->view, seq, ctx->mbox->ext_id,
 			      &data, &expunged);
 	rec = data;
 
@@ -98,8 +96,6 @@
 struct mail_save_context *
 mdbox_save_alloc(struct mailbox_transaction_context *t)
 {
-	struct index_transaction_context *it =
-		(struct index_transaction_context *)t;
 	struct mdbox_mailbox *mbox = (struct mdbox_mailbox *)t->box;
 	struct mdbox_save_context *ctx =
 		(struct mdbox_save_context *)t->save_ctx;
@@ -114,7 +110,7 @@
 
 	ctx = i_new(struct mdbox_save_context, 1);
 	ctx->ctx.ctx.transaction = t;
-	ctx->ctx.trans = it->trans;
+	ctx->ctx.trans = t->itrans;
 	ctx->mbox = mbox;
 	ctx->append_ctx = dbox_map_append_begin(mbox->storage->map, 0);
 	i_array_init(&ctx->mails, 32);
diff -r b13e01d82083 -r 0cf62ad4c7bf src/lib-storage/index/dbox-single/sdbox-save.c
--- a/src/lib-storage/index/dbox-single/sdbox-save.c	Thu Mar 18 03:41:22 2010 +0000
+++ b/src/lib-storage/index/dbox-single/sdbox-save.c	Fri Mar 19 15:13:24 2010 +0200
@@ -49,8 +49,6 @@
 struct mail_save_context *
 sdbox_save_alloc(struct mailbox_transaction_context *t)
 {
-	struct index_transaction_context *it =
-		(struct index_transaction_context *)t;
 	struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)t->box;
 	struct sdbox_save_context *ctx =
 		(struct sdbox_save_context *)t->save_ctx;
@@ -65,7 +63,7 @@
 
 	ctx = i_new(struct sdbox_save_context, 1);
 	ctx->ctx.ctx.transaction = t;
-	ctx->ctx.trans = it->trans;
+	ctx->ctx.trans = t->itrans;
 	ctx->mbox = mbox;
 	i_array_init(&ctx->files, 32);
 	t->save_ctx = &ctx->ctx.ctx;
diff -r b13e01d82083 -r 0cf62ad4c7bf src/lib-storage/index/index-mail.c
--- a/src/lib-storage/index/index-mail.c	Thu Mar 18 03:41:22 2010 +0000
+++ b/src/lib-storage/index/index-mail.c	Fri Mar 19 15:13:24 2010 +0200
@@ -124,17 +124,16 @@
 					  size_r, sizeof(*size_r));
 }
 
-enum mail_flags index_mail_get_flags(struct mail *_mail)
+enum mail_flags index_mail_get_flags(struct mail *mail)
 {
-	struct index_mail *mail = (struct index_mail *)_mail;
 	const struct mail_index_record *rec;
 	enum mail_flags flags;
 
-	rec = mail_index_lookup(mail->trans->trans_view, _mail->seq);
+	rec = mail_index_lookup(mail->transaction->view, mail->seq);
 	flags = rec->flags & (MAIL_FLAGS_NONRECENT |
 			      MAIL_INDEX_MAIL_FLAG_BACKEND);
 
-	if (index_mailbox_is_recent(_mail->box, _mail->uid))
+	if (index_mailbox_is_recent(mail->box, mail->uid))
 		flags |= MAIL_RECENT;
 
 	return flags;
@@ -149,7 +148,7 @@
 
 	mail_index_modseq_enable(_mail->box->index);
 	mail->data.modseq =
-		mail_index_modseq_lookup(mail->trans->trans_view, _mail->seq);
+		mail_index_modseq_lookup(_mail->transaction->view, _mail->seq);
 	return mail->data.modseq;
 }
 
@@ -190,7 +189,7 @@
 
 	if (!array_is_created(&data->keyword_indexes)) {
 		p_array_init(&data->keyword_indexes, mail->data_pool, 32);
-		mail_index_lookup_keywords(mail->trans->trans_view,
+		mail_index_lookup_keywords(_mail->transaction->view,
 					   mail->data.seq,
 					   &data->keyword_indexes);
 	}
@@ -1215,10 +1214,10 @@
 	data->seq = seq;
 
 	mail->mail.mail.seq = seq;
-	mail_index_lookup_uid(mail->trans->trans_view, seq,
+	mail_index_lookup_uid(_mail->transaction->view, seq,
 			      &mail->mail.mail.uid);
 
-	if (mail_index_view_is_inconsistent(mail->trans->trans_view)) {
+	if (mail_index_view_is_inconsistent(_mail->transaction->view)) {
 		mail_set_expunged(&mail->mail.mail);
 		return;
 	}
@@ -1418,14 +1417,14 @@
 	(void)index_mail_parse_body_finish(mail, 0);
 }
 
-static void index_mail_drop_recent_flag(struct index_mail *imail)
+static void index_mail_drop_recent_flag(struct mail *mail)
 {
 	const struct mail_index_header *hdr;
-	uint32_t first_recent_uid = imail->mail.mail.uid + 1;
+	uint32_t first_recent_uid = mail->uid + 1;
 
-	hdr = mail_index_get_header(imail->trans->trans_view);
+	hdr = mail_index_get_header(mail->transaction->view);
 	if (hdr->first_recent_uid < first_recent_uid) {
-		mail_index_update_header(imail->trans->trans,
+		mail_index_update_header(mail->transaction->itrans,
 			offsetof(struct mail_index_header, first_recent_uid),
 			&first_recent_uid, sizeof(first_recent_uid), FALSE);
 	}
@@ -1434,15 +1433,13 @@
 void index_mail_update_flags(struct mail *mail, enum modify_type modify_type,
 			     enum mail_flags flags)
 {
-	struct index_mail *imail = (struct index_mail *)mail;
-
 	if ((flags & MAIL_RECENT) == 0 &&
 	    index_mailbox_is_recent(mail->box, mail->uid))
-		index_mail_drop_recent_flag(imail);
+		index_mail_drop_recent_flag(mail);
 
 	flags &= MAIL_FLAGS_NONRECENT | MAIL_INDEX_MAIL_FLAG_BACKEND;
-	mail_index_update_flags(imail->trans->trans, mail->seq, modify_type,
-				flags);
+	mail_index_update_flags(mail->transaction->itrans, mail->seq,
+				modify_type, flags);
 }
 
 void index_mail_update_keywords(struct mail *mail, enum modify_type modify_type,
@@ -1462,35 +1459,31 @@
 		       sizeof(imail->data.keywords));
 	}
 
-	mail_index_update_keywords(imail->trans->trans, mail->seq, modify_type,
-				   keywords);
+	mail_index_update_keywords(mail->transaction->itrans, mail->seq,
+				   modify_type, keywords);
 }
 
 void index_mail_update_modseq(struct mail *mail, uint64_t min_modseq)
 {
-	struct index_mail *imail = (struct index_mail *)mail;
-
-	mail_index_update_modseq(imail->trans->trans, mail->seq, min_modseq);
+	mail_index_update_modseq(mail->transaction->itrans, mail->seq,
+				 min_modseq);
 }
 
 void index_mail_update_uid(struct mail *mail, uint32_t new_uid)
 {
-	struct index_mail *imail = (struct index_mail *)mail;
-
-	mail_index_update_uid(imail->trans->trans, mail->seq, new_uid);
+	mail_index_update_uid(mail->transaction->itrans, mail->seq, new_uid);
 }
 
 void index_mail_expunge(struct mail *mail)
 {
-	struct index_mail *imail = (struct index_mail *)mail;
 	const char *value;
 	uint8_t guid_128[MAIL_GUID_128_SIZE];
 
 	if (mail_get_special(mail, MAIL_FETCH_GUID, &value) < 0)
-		mail_index_expunge(imail->trans->trans, mail->seq);
+		mail_index_expunge(mail->transaction->itrans, mail->seq);
 	else {
 		mail_generate_guid_128_hash(value, guid_128);
-		mail_index_expunge_guid(imail->trans->trans,
+		mail_index_expunge_guid(mail->transaction->itrans,
 					mail->seq, guid_128);
 	}
 }
diff -r b13e01d82083 -r 0cf62ad4c7bf src/lib-storage/index/index-search.c
--- a/src/lib-storage/index/index-search.c	Thu Mar 18 03:41:22 2010 +0000
+++ b/src/lib-storage/index/index-search.c	Fri Mar 19 15:13:24 2010 +0200
@@ -1005,26 +1005,24 @@
 }
 
 struct mail_search_context *
-index_storage_search_init(struct mailbox_transaction_context *_t,
+index_storage_search_init(struct mailbox_transaction_context *t,
 			  struct mail_search_args *args,
 			  const enum mail_sort_type *sort_program)
 {
-	struct index_transaction_context *t =
-		(struct index_transaction_context *)_t;
 	struct index_search_context *ctx;
 	struct mailbox_status status;
 
 	ctx = i_new(struct index_search_context, 1);
-	ctx->mail_ctx.transaction = _t;
-	ctx->box = _t->box;
-	ctx->view = t->trans_view;
+	ctx->mail_ctx.transaction = t;
+	ctx->box = t->box;
+	ctx->view = t->view;
 	ctx->mail_ctx.args = args;
-	ctx->mail_ctx.sort_program = index_sort_program_init(_t, sort_program);
+	ctx->mail_ctx.sort_program = index_sort_program_init(t, sort_program);
 	ctx->next_time_check_cost = SEARCH_INITIAL_MAX_COST;
 	if (gettimeofday(&ctx->last_nonblock_timeval, NULL) < 0)
 		i_fatal("gettimeofday() failed: %m");
 
-	mailbox_get_status(_t->box, STATUS_MESSAGES, &status);
+	mailbox_get_status(t->box, STATUS_MESSAGES, &status);
 	ctx->mail_ctx.progress_max = status.messages;
 
 	i_array_init(&ctx->mail_ctx.results, 5);
@@ -1033,7 +1031,7 @@
 
 	mail_search_args_reset(ctx->mail_ctx.args->args, TRUE);
 	if (args->have_inthreads) {
-		if (mail_thread_init(_t->box, NULL, &ctx->thread_ctx) < 0)
+		if (mail_thread_init(t->box, NULL, &ctx->thread_ctx) < 0)
 			ctx->failed = TRUE;
 		if (search_build_inthreads(ctx, args->args) < 0)
 			ctx->failed = TRUE;
diff -r b13e01d82083 -r 0cf62ad4c7bf src/lib-storage/index/index-sort-string.c
--- a/src/lib-storage/index/index-sort-string.c	Thu Mar 18 03:41:22 2010 +0000
+++ b/src/lib-storage/index/index-sort-string.c	Fri Mar 19 15:13:24 2010 +0200
@@ -159,14 +159,12 @@
 static void index_sort_node_add(struct sort_string_context *ctx,
 				struct mail_sort_node *node)
 {
-	struct index_transaction_context *t =
-		(struct index_transaction_context *)ctx->program->t;
 	struct mail_index_map *map;
 	const void *data;
 	uint32_t reset_id;
 	bool expunged;
 
-	mail_index_lookup_ext_full(t->trans_view, node->seq,
+	mail_index_lookup_ext_full(ctx->program->t->view, node->seq,
 				   ctx->ext_id, &map, &data, &expunged);
 	if (expunged) {
 		/* we don't want to update expunged messages' sort IDs */
@@ -196,7 +194,7 @@
 	if (node->sort_id != 0) {
 		/* if reset ID increases, lookup all existing messages' sort
 		   IDs again. if it decreases, ignore the sort ID. */
-		if (!mail_index_ext_get_reset_id(t->trans_view, map,
+		if (!mail_index_ext_get_reset_id(ctx->program->t->view, map,
 						 ctx->ext_id, &reset_id))
 			reset_id = 0;
 		if (reset_id != ctx->highest_reset_id) {
@@ -686,8 +684,7 @@
 
 static void index_sort_write_changed_sort_ids(struct sort_string_context *ctx)
 {
-	struct index_transaction_context *t =
-		(struct index_transaction_context *)ctx->program->t;
+	struct mail_index_transaction *itrans = ctx->program->t->itrans;
 	uint32_t ext_id = ctx->ext_id;
 	const struct mail_sort_node *nodes;
 	unsigned int i, count;


More information about the dovecot-cvs mailing list