changeset 21265:d082c99cbc65

sdbox: Rebuild index after it's been fsck'd
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 24 Nov 2016 18:12:00 +0200
parents 8f33680c6722
children b861c0860dd2
files src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c src/lib-storage/index/dbox-single/sdbox-sync.c
diffstat 2 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c	Mon Nov 28 03:26:01 2016 +0100
+++ b/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c	Thu Nov 24 18:12:00 2016 +0200
@@ -216,8 +216,10 @@
 
 	if (ret < 0)
 		mail_index_transaction_rollback(&trans);
-	else
+	else {
+		mail_index_unset_fscked(trans);
 		ret = mail_index_transaction_commit(&trans);
+	}
 	mail_index_view_close(&view);
 	mbox->corrupted_rebuild_count = 0;
 	return ret;
--- a/src/lib-storage/index/dbox-single/sdbox-sync.c	Mon Nov 28 03:26:01 2016 +0100
+++ b/src/lib-storage/index/dbox-single/sdbox-sync.c	Thu Nov 24 18:12:00 2016 +0200
@@ -191,6 +191,8 @@
 		     struct sdbox_sync_context **ctx_r)
 {
 	struct mail_storage *storage = mbox->box.storage;
+	const struct mail_index_header *hdr =
+		mail_index_get_header(mbox->box.view);
 	struct sdbox_sync_context *ctx;
 	enum mail_index_sync_flags sync_flags;
 	unsigned int i;
@@ -199,6 +201,7 @@
 
 	force_rebuild = (flags & SDBOX_SYNC_FLAG_FORCE_REBUILD) != 0;
 	rebuild = force_rebuild ||
+		(hdr->flags & MAIL_INDEX_HDR_FLAG_FSCKD) != 0 ||
 		mbox->corrupted_rebuild_count != 0 ||
 		sdbox_refresh_header(mbox, TRUE, FALSE) < 0;