]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Don't stop vsize calculation on expunged mails.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 7 Feb 2017 11:53:52 +0000 (13:53 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 17 Feb 2017 09:33:25 +0000 (11:33 +0200)
I don't know why I added such logic there in the first place. If we just
skip the expunged mails, the end result should still be correct and
usable when cached.

src/lib-storage/index/index-mailbox-size.c

index 52c15abc6f479f417f4aeed56e4fb22c3b654a03..51072268099aa9d690e850ca9cb22292d2313c87 100644 (file)
@@ -235,8 +235,7 @@ void index_mailbox_vsize_hdr_expunge(struct mailbox_vsize_update *update,
 }
 
 static int
-index_mailbox_vsize_hdr_add_missing(struct mailbox_vsize_update *update,
-                                   bool need_result)
+index_mailbox_vsize_hdr_add_missing(struct mailbox_vsize_update *update)
 {
        struct mailbox_index_vsize *vsize_hdr = &update->vsize_hdr;
        struct mailbox_transaction_context *trans;
@@ -275,14 +274,8 @@ index_mailbox_vsize_hdr_add_missing(struct mailbox_vsize_update *update,
                                         MAIL_FETCH_VIRTUAL_SIZE, NULL);
        while (mailbox_search_next(search_ctx, &mail)) {
                if (mail_get_virtual_size(mail, &vsize) < 0) {
-                       if (mail->expunged) {
-                               if (!need_result) {
-                                       ret = -1;
-                                       break;
-                               }
-                               index_mailbox_vsize_update_write(update);
+                       if (mail->expunged)
                                continue;
-                       }
                        ret = -1;
                        break;
                }
@@ -325,7 +318,7 @@ int index_mailbox_get_virtual_size(struct mailbox *box,
           anyway internally even though we won't be saving the result. */
        (void)index_mailbox_vsize_update_wait_lock(update);
 
-       ret = index_mailbox_vsize_hdr_add_missing(update, TRUE);
+       ret = index_mailbox_vsize_hdr_add_missing(update);
        metadata_r->virtual_size = update->vsize_hdr.vsize;
        index_mailbox_vsize_update_deinit(&update);
        return ret;
@@ -402,6 +395,6 @@ void index_mailbox_vsize_update_appends(struct mailbox *box)
        if (update->vsize_hdr.highest_uid + 1 != status.uidnext &&
            index_mailbox_vsize_want_updates(update) &&
            index_mailbox_vsize_update_try_lock(update))
-               (void)index_mailbox_vsize_hdr_add_missing(update, FALSE);
+               (void)index_mailbox_vsize_hdr_add_missing(update);
        index_mailbox_vsize_update_deinit(&update);
 }