Skip to content

Commit

Permalink
lib-storage: Move index_mail.vsize_ext_id to mailbox.mail_vsize_ext_id
Browse files Browse the repository at this point in the history
It's mailbox-specific, so it doesn't have to be looked up every time.
Also this is needed for the following fix.
  • Loading branch information
sirainen committed Jan 30, 2017
1 parent 64a3686 commit 134987b
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 13 deletions.
21 changes: 9 additions & 12 deletions src/lib-storage/index/index-mail.c
Expand Up @@ -456,7 +456,7 @@ bool index_mail_get_cached_virtual_size(struct index_mail *mail, uoff_t *size_r)

/* 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) {
Expand Down Expand Up @@ -489,7 +489,7 @@ bool index_mail_get_cached_virtual_size(struct index_mail *mail, uoff_t *size_r)
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;
Expand Down Expand Up @@ -876,7 +876,7 @@ static void index_mail_cache_sizes(struct index_mail *mail)
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)) {
Expand All @@ -887,7 +887,7 @@ static void index_mail_cache_sizes(struct index_mail *mail)
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++) {
Expand Down Expand Up @@ -1540,9 +1540,6 @@ void index_mail_init(struct index_mail *mail,
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);
Expand Down Expand Up @@ -2208,15 +2205,15 @@ void index_mail_precache(struct mail *mail)
}

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);
}
}

Expand All @@ -2236,14 +2233,14 @@ void index_mail_set_cache_corrupted(struct mail *mail,
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";
Expand Down
1 change: 0 additions & 1 deletion src/lib-storage/index/index-mail.h
Expand Up @@ -137,7 +137,6 @@ struct index_mail {
struct index_mailbox_context *ibox;

int pop3_state;
uint32_t vsize_ext_id;

/* per-mail variables, here for performance reasons: */
uint32_t header_seq;
Expand Down
3 changes: 3 additions & 0 deletions src/lib-storage/index/index-storage.c
Expand Up @@ -303,6 +303,9 @@ int index_storage_mailbox_open(struct mailbox *box, bool move_to_memory)
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;

Expand Down
1 change: 1 addition & 0 deletions src/lib-storage/mail-storage-private.h
Expand Up @@ -363,6 +363,7 @@ struct mailbox {
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;
Expand Down

0 comments on commit 134987b

Please sign in to comment.