]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mdbox: Removed forced automatic purging for now. It was too ineffecient.
authorTimo Sirainen <tss@iki.fi>
Tue, 2 Feb 2010 20:19:35 +0000 (22:19 +0200)
committerTimo Sirainen <tss@iki.fi>
Tue, 2 Feb 2010 20:19:35 +0000 (22:19 +0200)
--HG--
branch : HEAD

src/lib-storage/index/dbox-multi/mdbox-map.c
src/lib-storage/index/dbox-multi/mdbox-map.h
src/lib-storage/index/dbox-multi/mdbox-sync.c
src/lib-storage/index/dbox-multi/mdbox-sync.h

index 7110fcc65b86b16906efe05587e93c5029f221c7..4699b9c969aff6418957b85fb451445c2a97c923 100644 (file)
@@ -335,48 +335,6 @@ static void dbox_map_filter_zero_refs(struct dbox_map *map)
        pool_unref(&pool);
 }
 
-bool dbox_map_want_purge(struct dbox_map *map)
-{
-       const struct mail_index_header *hdr;
-       const struct dbox_map_mail_index_record *rec;
-       const uint16_t *ref16_p;
-       const void *data;
-       uoff_t ref0_size, total_size;
-       bool expunged;
-       uint32_t seq;
-
-       if (map->set->mdbox_purge_min_percentage >= 100) {
-               /* we never purge anything */
-               return FALSE;
-       }
-
-       ref0_size = total_size = 0;
-       hdr = mail_index_get_header(map->view);
-       for (seq = 1; seq <= hdr->messages_count; seq++) {
-               mail_index_lookup_ext(map->view, seq, map->map_ext_id,
-                                     &data, &expunged);
-               if (data == NULL || expunged)
-                       continue;
-               rec = data;
-
-               mail_index_lookup_ext(map->view, seq, map->ref_ext_id,
-                                     &data, &expunged);
-               if (data == NULL || expunged)
-                       continue;
-               ref16_p = data;
-
-               if (*ref16_p == 0)
-                       ref0_size += rec->size;
-               total_size += rec->size;
-       }
-
-       if (ref0_size < DBOX_FORCE_PURGE_MIN_BYTES)
-               return FALSE;
-       if ((float)ref0_size / (float)total_size < DBOX_FORCE_PURGE_MIN_RATIO)
-               return FALSE;
-       return TRUE;
-}
-
 const ARRAY_TYPE(seq_range) *dbox_map_get_zero_ref_files(struct dbox_map *map)
 {
        const struct mail_index_header *hdr;
index 806af655cd5f0f9940cb1ae988fe71bcef2bfbe9..788efbd7cfa07f0e2bd9ba7f1eaf27ee5e1b3809 100644 (file)
@@ -55,8 +55,6 @@ int dbox_map_update_refcounts(struct dbox_map_transaction_context *ctx,
                              const ARRAY_TYPE(uint32_t) *map_uids, int diff);
 int dbox_map_remove_file_id(struct dbox_map *map, uint32_t file_id);
 
-/* Returns TRUE if there's enough pressure to purge immediately. */
-bool dbox_map_want_purge(struct dbox_map *map);
 /* Return all files containing messages with zero refcount. */
 const ARRAY_TYPE(seq_range) *dbox_map_get_zero_ref_files(struct dbox_map *map);
 
index 51ba7ba8c15533f5fb6a770e10f39c616ff92aca..e1030abea6df1a25bc0d9773e131d0ab3a4ec9bf 100644 (file)
@@ -106,15 +106,6 @@ static int mdbox_sync_index_finish_expunges(struct mdbox_sync_context *ctx)
        struct dbox_map_transaction_context *map_trans;
        int ret;
 
-       /* prevent a user from saving + expunging messages all the time and
-          using lots of disk space. but avoid doing this in situations where
-          a user simply expunges a lot of mail for the first time. that's why
-          we do this calculation before sync, not after: the purging is
-          triggered only after the second expunge. */
-       if ((ctx->flags & MDBOX_SYNC_FLAG_NO_PURGE) == 0 &&
-           dbox_map_want_purge(ctx->mbox->storage->map))
-               ctx->purge = TRUE;
-
        map_trans = dbox_map_transaction_begin(ctx->mbox->storage->map, FALSE);
        ret = dbox_map_update_refcounts(map_trans, &ctx->expunged_map_uids, -1);
        if (ret == 0) {
@@ -282,8 +273,6 @@ int mdbox_sync_finish(struct mdbox_sync_context **_ctx, bool success)
                mail_index_sync_rollback(&ctx->index_sync_ctx);
        }
 
-       if (ctx->purge)
-               (void)mdbox_sync_purge(&ctx->mbox->storage->storage.storage);
        i_free(ctx);
        return ret;
 }
index 577b9f18dcfc6cf4bd70321cb44ccb28a8dc86bb..165a383a6c3459afe6f9df6a977033f3c3369287 100644 (file)
@@ -22,8 +22,6 @@ struct mdbox_sync_context {
        /* list of expunged map_uids. the same map_uid may be listed more than
           once in case message has been copied multiple times to mailbox. */
        ARRAY_TYPE(uint32_t) expunged_map_uids;
-
-       unsigned int purge:1;
 };
 
 int mdbox_sync_begin(struct mdbox_mailbox *mbox, enum mdbox_sync_flags flags,