]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: fsck now adds MAIL_INDEX_HDR_FLAG_FSCKD to header.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 24 Nov 2016 13:49:15 +0000 (15:49 +0200)
committerGitLab <gitlab@git.dovecot.net>
Fri, 25 Nov 2016 13:25:14 +0000 (15:25 +0200)
It can only be removed by an explicit header update.

src/lib-index/mail-index-fsck.c
src/lib-index/mail-index-sync-update.c
src/lib-index/mail-index.h

index 330b8b934d8abea38b6c7ef061132851d534f65b..14afd4828ef4098eb546f30267a6f35f97bbc73b 100644 (file)
@@ -433,6 +433,7 @@ mail_index_fsck_map(struct mail_index *index, struct mail_index_map *map)
        mail_index_fsck_extensions(index, map, &hdr);
        mail_index_fsck_records(index, map, &hdr);
 
+       hdr.flags |= MAIL_INDEX_HDR_FLAG_FSCKD;
        map->hdr = hdr;
        i_assert(map->hdr_copy_buf->used == map->hdr.header_size);
 }
index 64d7e37d7b2287c0ee7684a0178384065ba4b818..5ef40df65a76190dbe052483142028b4cbd0d33c 100644 (file)
@@ -1012,6 +1012,8 @@ int mail_index_sync_map(struct mail_index_map **_map,
                mail_transaction_log_view_get_prev_pos(view->log_view,
                                                       &prev_seq, &prev_offset);
                map = mail_index_map_alloc(index);
+               if ((index->map->hdr.flags & MAIL_INDEX_HDR_FLAG_FSCKD) != 0)
+                       map->hdr.flags |= MAIL_INDEX_HDR_FLAG_FSCKD;
                map->hdr.log_file_seq = prev_seq;
                map->hdr.log_file_tail_offset = 0;
                mail_index_sync_replace_map(&sync_map_ctx, map);
index cfcdf481f062acb6ef94b11bd71e588502517b40..61a913d0758a9ae1a215941696558d43c0f5fb96 100644 (file)
@@ -46,7 +46,10 @@ enum mail_index_header_compat_flags {
 enum mail_index_header_flag {
        /* Index file is corrupted, reopen or recreate it. */
        MAIL_INDEX_HDR_FLAG_CORRUPTED           = 0x0001,
-       MAIL_INDEX_HDR_FLAG_HAVE_DIRTY          = 0x0002
+       MAIL_INDEX_HDR_FLAG_HAVE_DIRTY          = 0x0002,
+       /* Index has been fsck'd. The caller may want to resync the index
+          to make sure it's valid and drop this flag. */
+       MAIL_INDEX_HDR_FLAG_FSCKD               = 0x0004,
 };
 
 enum mail_index_mail_flags {