dovecot-2.2: mdbox: Added mdbox_purge_preserve_alt setting to ke...

dovecot at dovecot.org dovecot at dovecot.org
Mon Mar 10 22:39:39 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/a94e1b560a80
changeset: 17153:a94e1b560a80
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Mar 11 00:39:27 2014 +0200
description:
mdbox: Added mdbox_purge_preserve_alt setting to keep the file within alt storage during purge.
Perhaps it would be better for this setting to be the default in v2.3 and
maybe be removed entirely? Not a good idea to change during v2.2.x anyway,
so for now this is a setting.

diffstat:

 src/lib-storage/index/dbox-multi/mdbox-purge.c    |  9 +++++++--
 src/lib-storage/index/dbox-multi/mdbox-settings.c |  2 ++
 src/lib-storage/index/dbox-multi/mdbox-settings.h |  1 +
 3 files changed, 10 insertions(+), 2 deletions(-)

diffs (60 lines):

diff -r 346981286d20 -r a94e1b560a80 src/lib-storage/index/dbox-multi/mdbox-purge.c
--- a/src/lib-storage/index/dbox-multi/mdbox-purge.c	Tue Mar 04 17:11:49 2014 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-purge.c	Tue Mar 11 00:39:27 2014 +0200
@@ -165,11 +165,16 @@
 }
 
 static bool
-mdbox_purge_want_altpath(struct mdbox_purge_context *ctx, uint32_t map_uid)
+mdbox_purge_want_altpath(struct mdbox_purge_context *ctx,
+			 struct dbox_file *file, uint32_t map_uid)
 {
 	enum mdbox_msg_action action;
 	void *value;
 
+	if (dbox_file_is_in_alt(file) &&
+	    ctx->storage->set->mdbox_purge_preserve_alt)
+		return TRUE;
+
 	if (!ctx->have_altmoves)
 		return FALSE;
 
@@ -193,7 +198,7 @@
 	if (ctx->append_ctx == NULL)
 		ctx->append_ctx = mdbox_map_append_begin(ctx->atomic);
 
-	append_flags = !mdbox_purge_want_altpath(ctx, msg->map_uid) ? 0 :
+	append_flags = !mdbox_purge_want_altpath(ctx, file, msg->map_uid) ? 0 :
 		DBOX_MAP_APPEND_FLAG_ALT;
 	msg_size = file->msg_header_size + file->cur_physical_size;
 	if (mdbox_map_append_next(ctx->append_ctx, file->cur_physical_size,
diff -r 346981286d20 -r a94e1b560a80 src/lib-storage/index/dbox-multi/mdbox-settings.c
--- a/src/lib-storage/index/dbox-multi/mdbox-settings.c	Tue Mar 04 17:11:49 2014 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-settings.c	Tue Mar 11 00:39:27 2014 +0200
@@ -13,6 +13,7 @@
 
 static const struct setting_define mdbox_setting_defines[] = {
 	DEF(SET_BOOL, mdbox_preallocate_space),
+	DEF(SET_BOOL, mdbox_purge_preserve_alt),
 	DEF(SET_SIZE, mdbox_rotate_size),
 	DEF(SET_TIME, mdbox_rotate_interval),
 
@@ -21,6 +22,7 @@
 
 static const struct mdbox_settings mdbox_default_settings = {
 	.mdbox_preallocate_space = FALSE,
+	.mdbox_purge_preserve_alt = FALSE,
 	.mdbox_rotate_size = 2*1024*1024,
 	.mdbox_rotate_interval = 0
 };
diff -r 346981286d20 -r a94e1b560a80 src/lib-storage/index/dbox-multi/mdbox-settings.h
--- a/src/lib-storage/index/dbox-multi/mdbox-settings.h	Tue Mar 04 17:11:49 2014 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-settings.h	Tue Mar 11 00:39:27 2014 +0200
@@ -3,6 +3,7 @@
 
 struct mdbox_settings {
 	bool mdbox_preallocate_space;
+	bool mdbox_purge_preserve_alt;
 	uoff_t mdbox_rotate_size;
 	unsigned int mdbox_rotate_interval;
 };


More information about the dovecot-cvs mailing list