Skip to content

Commit

Permalink
lib-index: Add mail_index_unset_fscked()
Browse files Browse the repository at this point in the history
This can be used to easily remove MAIL_INDEX_HDR_FLAG_FSCKD. It takes a
transaction parameter instead of sync_ctx because some index rebuilds
are done with a separate transaction while the sync_ctx is rolled back.
  • Loading branch information
sirainen authored and GitLab committed Nov 25, 2016
1 parent 02d6628 commit c5073d5
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/lib-index/mail-index-transaction-update.c
Expand Up @@ -1307,6 +1307,22 @@ void mail_index_reset(struct mail_index_transaction *t)
t->reset = TRUE;
}

void mail_index_unset_fscked(struct mail_index_transaction *t)
{
struct mail_index_header new_hdr =
*mail_index_get_header(t->view);

i_assert(t->view->index->log_sync_locked);

/* remove fsck'd-flag if it exists. */
if ((new_hdr.flags & MAIL_INDEX_HDR_FLAG_FSCKD) != 0) {
new_hdr.flags &= ~MAIL_INDEX_HDR_FLAG_FSCKD;
mail_index_update_header(t,
offsetof(struct mail_index_header, flags),
&new_hdr.flags, sizeof(new_hdr.flags), FALSE);
}
}

void mail_index_set_deleted(struct mail_index_transaction *t)
{
i_assert(!t->index_undeleted);
Expand Down
3 changes: 3 additions & 0 deletions src/lib-index/mail-index.h
Expand Up @@ -523,6 +523,9 @@ void mail_index_update_highest_modseq(struct mail_index_transaction *t,
/* Reset the index before committing this transaction. This is usually done
only when UIDVALIDITY changes. */
void mail_index_reset(struct mail_index_transaction *t);
/* Remove MAIL_INDEX_HDR_FLAG_FSCKD from header if it exists. This must be
called only during syncing so that the mailbox is locked. */
void mail_index_unset_fscked(struct mail_index_transaction *t);
/* Mark index deleted. No further changes will be possible after the
transaction has been committed. */
void mail_index_set_deleted(struct mail_index_transaction *t);
Expand Down

0 comments on commit c5073d5

Please sign in to comment.