Mercurial > dovecot > core-2.2
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;