]> 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)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 25 Nov 2016 13:30:44 +0000 (15:30 +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 40cb4a9bea85f1da2d833d3c4b5ead4f9abfc6e9..3a7a80c8f0503b7812cab93f3e545fedf4de471e 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 b0221b55d4c068f0728972c92e5d173d648b9a90..82b38c9d6b57d075df96a9904046385eccf4118f 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 {