From: Timo Sirainen Date: Sat, 1 May 2004 16:30:58 +0000 (+0300) Subject: remove mail_index_reset() completely X-Git-Tag: 1.1.alpha1~4162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=685393de106e55b61f754d420e378d05bd462ebb;p=thirdparty%2Fdovecot%2Fcore.git remove mail_index_reset() completely --HG-- branch : HEAD --- diff --git a/src/lib-index/Makefile.am b/src/lib-index/Makefile.am index e3af7586da..9860919d79 100644 --- a/src/lib-index/Makefile.am +++ b/src/lib-index/Makefile.am @@ -12,7 +12,6 @@ libindex_a_SOURCES = \ mail-index-fsck.c \ mail-index-lock.c \ mail-index-transaction.c \ - mail-index-reset.c \ mail-index-sync.c \ mail-index-sync-update.c \ mail-index-view.c \ diff --git a/src/lib-index/mail-index-private.h b/src/lib-index/mail-index-private.h index 4f79678051..fcc9d8a667 100644 --- a/src/lib-index/mail-index-private.h +++ b/src/lib-index/mail-index-private.h @@ -128,7 +128,6 @@ int mail_index_sync_get_rec(struct mail_index_view *view, const void *data, size_t *data_offset); void mail_index_set_inconsistent(struct mail_index *index); -int mail_index_mark_corrupted(struct mail_index *index); int mail_index_set_error(struct mail_index *index, const char *fmt, ...) __attr_format__(2, 3); diff --git a/src/lib-index/mail-index-reset.c b/src/lib-index/mail-index-reset.c deleted file mode 100644 index 626902af02..0000000000 --- a/src/lib-index/mail-index-reset.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 2004 Timo Sirainen */ - -#include "lib.h" -#include "mmap-util.h" -#include "write-full.h" -#include "mail-index-private.h" -#include "mail-transaction-log.h" - -static int mail_index_mark_corrupted(struct mail_index *index) -{ - struct mail_index_header hdr; - - if (index->readonly) - return 0; - - /* make sure we can write the header */ - if (!MAIL_INDEX_MAP_IS_IN_MEMORY(index->map)) { - if (mprotect(index->map->mmap_base, sizeof(hdr), - PROT_READ | PROT_WRITE) < 0) { - mail_index_set_syscall_error(index, "mprotect()"); - return -1; - } - } - - hdr = *index->hdr; - hdr.flags |= MAIL_INDEX_HDR_FLAG_CORRUPTED; - if (mail_index_write_header(index, &hdr) < 0) - return -1; - - if (fsync(index->fd) < 0) - return mail_index_set_syscall_error(index, "fsync()"); - - mail_index_set_inconsistent(index); - return 0; -} - -int mail_index_reset(struct mail_index *index) -{ - struct mail_transaction_log *log; - struct mail_index_header hdr; - uint32_t file_seq; - uoff_t file_offset; - int log_locked; - - mail_index_header_init(&hdr); - if (hdr.indexid == index->indexid) - hdr.indexid++; - - if (mail_index_mark_corrupted(index) < 0) - return -1; - - /*log_locked = index->log_locked; - if (log_locked) - mail_transaction_log_sync_unlock(index->log); - - log = index->log; - mail_index_close(index); - index->log = log; - - if (mail_index_open(index, MAIL_INDEX_OPEN_FLAG_CREATE | - MAIL_INDEX_OPEN_FLAG_REOPEN) < 0) - return -1; - - if (log_locked) { - if (mail_transaction_log_sync_lock(index->log, - &file_seq, &file_offset) < 0) - return -1; - }*/ - - return 0; -} diff --git a/src/lib-index/mail-index.h b/src/lib-index/mail-index.h index 02d813a77f..119ccf1aff 100644 --- a/src/lib-index/mail-index.h +++ b/src/lib-index/mail-index.h @@ -212,8 +212,8 @@ int mail_index_sync_have_more(struct mail_index_sync_ctx *ctx); /* End synchronization by unlocking the index and closing the view. */ int mail_index_sync_end(struct mail_index_sync_ctx *ctx); -/* Reset index by erasing everything in it. Invalidates all views. */ -int mail_index_reset(struct mail_index *index); +/* Mark index file corrupted. Invalidates all views. */ +int mail_index_mark_corrupted(struct mail_index *index); /* Check and fix any found problems. If index is broken beyond repair, calls mail_index_reset() and returns 0. Otherwise returns -1 if there was some I/O error or 1 if everything went ok. */ diff --git a/src/lib-storage/index/maildir/maildir-sync.c b/src/lib-storage/index/maildir/maildir-sync.c index 7e255287c1..9bba79d5a6 100644 --- a/src/lib-storage/index/maildir/maildir-sync.c +++ b/src/lib-storage/index/maildir/maildir-sync.c @@ -347,7 +347,7 @@ static int maildir_sync_index(struct maildir_sync_context *ctx) mail_storage_set_critical(ibox->box.storage, "Maildir sync: UID inserted in the middle " "of mailbox (%u > %u)", rec->uid, uid); - (void)mail_index_reset(ibox->index); + mail_index_mark_corrupted(ibox->index); ret = -1; break; }