changeset 21457:19f7a147c56f

lib-storage: Move index_mail.vsize_ext_id to mailbox.mail_vsize_ext_id It's mailbox-specific, so it doesn't have to be looked up every time. Also this is needed for the following fix.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 30 Jan 2017 15:06:46 +0200
parents 419ab5991cc6
children 582c0d50b3dd
files src/lib-storage/index/index-mail.c src/lib-storage/index/index-mail.h src/lib-storage/index/index-storage.c src/lib-storage/mail-storage-private.h
diffstat 4 files changed, 13 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail.c	Wed Dec 14 18:13:25 2016 +0200
+++ b/src/lib-storage/index/index-mail.c	Mon Jan 30 15:06:46 2017 +0200
@@ -455,7 +455,7 @@
 
 	/* see if we can get it from index */
 	mail_index_lookup_ext(_mail->transaction->view, _mail->seq,
-			      mail->vsize_ext_id, &idata, &expunged);
+			      _mail->box->mail_vsize_ext_id, &idata, &expunged);
 	const uint32_t *vsize = idata;
 
 	if (vsize != NULL && *vsize > 0) {
@@ -488,7 +488,7 @@
 	    data->virtual_size < (uint32_t)-1) {
 		uint32_t vsize = data->virtual_size+1;
 		mail_index_update_ext(_mail->transaction->itrans, _mail->seq,
-				      mail->vsize_ext_id, &vsize, NULL);
+				      _mail->box->mail_vsize_ext_id, &vsize, NULL);
 	}
 
 	return TRUE;
@@ -875,7 +875,7 @@
 		extension for box virtual size exists
 	*/
 
-	if ((mail_index_map_get_ext_idx(view->map, mail->vsize_ext_id, &idx) ||
+	if ((mail_index_map_get_ext_idx(view->map, _mail->box->mail_vsize_ext_id, &idx) ||
 	     mail_index_map_get_ext_idx(view->map, _mail->box->vsize_hdr_ext_id, &idx)) &&
 	    (sizes[0] != (uoff_t)-1 &&
 	     sizes[0] < (uint32_t)-1)) {
@@ -886,7 +886,7 @@
 		vsize = sizes[0] + 1;
 		sizes[0] = (uoff_t)-1;
 		mail_index_update_ext(_mail->transaction->itrans, _mail->seq,
-				      mail->vsize_ext_id, &vsize, NULL);
+				      _mail->box->mail_vsize_ext_id, &vsize, NULL);
 	}
 
 	for (i = 0; i < N_ELEMENTS(size_fields); i++) {
@@ -1537,9 +1537,6 @@
 	mail->mail.v = *t->box->mail_vfuncs;
 	mail->mail.mail.box = t->box;
 	mail->mail.mail.transaction = t;
-	mail->vsize_ext_id = mail_index_ext_register(t->box->index, "vsize", 0,
-						     sizeof(uint32_t),
-						     sizeof(uint32_t));
 	t->mail_ref_count++;
 	mail->mail.data_pool = pool_alloconly_create("index_mail", 16384);
 	mail->ibox = INDEX_STORAGE_CONTEXT(t->box);
@@ -2205,15 +2202,15 @@
 }
 
 static void
-index_mail_reset_vsize_ext(struct mail *mail, struct index_mail *imail)
+index_mail_reset_vsize_ext(struct mail *mail)
 {
 	unsigned int idx;
 	uint32_t vsize = 0;
 	struct mail_index_view *view = mail->transaction->view;
-	if (mail_index_map_get_ext_idx(view->map, imail->vsize_ext_id,
+	if (mail_index_map_get_ext_idx(view->map, mail->box->mail_vsize_ext_id,
 				       &idx)) {
 		mail_index_update_ext(mail->transaction->itrans, mail->seq,
-				      imail->vsize_ext_id, &vsize, NULL);
+				      mail->box->mail_vsize_ext_id, &vsize, NULL);
 	}
 }
 
@@ -2239,14 +2236,14 @@
 		imail->data.physical_size = (uoff_t)-1;
 		imail->data.virtual_size = (uoff_t)-1;
 		imail->data.parts = NULL;
-		index_mail_reset_vsize_ext(mail, imail);
+		index_mail_reset_vsize_ext(mail);
 		break;
 	case MAIL_FETCH_VIRTUAL_SIZE:
 		field_name = "virtual size";
 		imail->data.physical_size = (uoff_t)-1;
 		imail->data.virtual_size = (uoff_t)-1;
 		imail->data.parts = NULL;
-		index_mail_reset_vsize_ext(mail, imail);
+		index_mail_reset_vsize_ext(mail);
 		break;
 	case MAIL_FETCH_MESSAGE_PARTS:
 		field_name = "MIME parts";
--- a/src/lib-storage/index/index-mail.h	Wed Dec 14 18:13:25 2016 +0200
+++ b/src/lib-storage/index/index-mail.h	Mon Jan 30 15:06:46 2017 +0200
@@ -137,7 +137,6 @@
 	struct index_mailbox_context *ibox;
 
 	int pop3_state;
-	uint32_t vsize_ext_id;
 
 	/* per-mail variables, here for performance reasons: */
 	uint32_t header_seq;
--- a/src/lib-storage/index/index-storage.c	Wed Dec 14 18:13:25 2016 +0200
+++ b/src/lib-storage/index/index-storage.c	Mon Jan 30 15:06:46 2017 +0200
@@ -302,6 +302,9 @@
 	box->box_last_rename_stamp_ext_id =
 		mail_index_ext_register(box->index, "last-rename-stamp",
 					sizeof(uint32_t), 0, sizeof(uint32_t));
+	box->mail_vsize_ext_id = mail_index_ext_register(box->index, "vsize", 0,
+							 sizeof(uint32_t),
+							 sizeof(uint32_t));
 
 	box->opened = TRUE;
 
--- a/src/lib-storage/mail-storage-private.h	Wed Dec 14 18:13:25 2016 +0200
+++ b/src/lib-storage/mail-storage-private.h	Mon Jan 30 15:06:46 2017 +0200
@@ -362,6 +362,7 @@
 	uint32_t pop3_uidl_hdr_ext_id;
 	uint32_t box_name_hdr_ext_id;
 	uint32_t box_last_rename_stamp_ext_id;
+	uint32_t mail_vsize_ext_id;
 
 	/* MAIL_RECENT flags handling */
 	ARRAY_TYPE(seq_range) recent_flags;