Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5853:d9f319a9d6e0 HEAD
mail_index_map now contains pointer to index, so all functions taking map
parameter don't need index anymore.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 01 Jul 2007 18:39:51 +0300 |
parents | 2f9d38b82364 |
children | eca7e29dce0d |
files | src/lib-index/mail-index-fsck.c src/lib-index/mail-index-map.c src/lib-index/mail-index-private.h src/lib-index/mail-index-sync-ext.c src/lib-index/mail-index-sync-keywords.c src/lib-index/mail-index-sync-private.h src/lib-index/mail-index-sync-update.c src/lib-index/mail-index-view-private.h src/lib-index/mail-index-view-sync.c src/lib-index/mail-index-view.c src/lib-index/mail-index.c |
diffstat | 11 files changed, 58 insertions(+), 64 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index-fsck.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-fsck.c Sun Jul 01 18:39:51 2007 +0300 @@ -150,7 +150,7 @@ i_warning("fscking index file %s", index->filepath); map = mail_index_map_clone(index->map); - mail_index_unmap(index, &index->map); + mail_index_unmap(&index->map); index->map = map; ret = mail_index_fsck_map(index, map, &lock, &error);
--- a/src/lib-index/mail-index-map.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-map.c Sun Jul 01 18:39:51 2007 +0300 @@ -59,8 +59,7 @@ } uint32_t -mail_index_map_register_ext(struct mail_index *index, - struct mail_index_map *map, const char *name, +mail_index_map_register_ext(struct mail_index_map *map, const char *name, uint32_t hdr_offset, uint32_t hdr_size, uint32_t record_offset, uint32_t record_size, uint32_t record_align, uint32_t reset_id) @@ -85,7 +84,7 @@ ext->record_align = record_align; ext->reset_id = reset_id; - ext->index_idx = mail_index_ext_register(index, name, hdr_size, + ext->index_idx = mail_index_ext_register(map->index, name, hdr_size, record_size, record_align); /* Update index ext_id -> map ext_id mapping. Fill non-used @@ -110,9 +109,9 @@ return MAIL_INDEX_HEADER_SIZE_ALIGN(size) - size; } -static int mail_index_parse_extensions(struct mail_index *index, - struct mail_index_map *map) +static int mail_index_parse_extensions(struct mail_index_map *map) { + struct mail_index *index = map->index; const struct mail_index_ext_header *ext_hdr; unsigned int i, old_count; const char *name; @@ -200,7 +199,7 @@ return -1; } - mail_index_map_register_ext(index, map, name, + mail_index_map_register_ext(map, name, offset, ext_hdr->hdr_size, ext_hdr->record_offset, ext_hdr->record_size, @@ -270,9 +269,9 @@ return TRUE; } -static int mail_index_check_header(struct mail_index *index, - struct mail_index_map *map) +static int mail_index_check_header(struct mail_index_map *map) { + struct mail_index *index = map->index; const struct mail_index_header *hdr = &map->hdr; if (!mail_index_check_header_compat(index, hdr, (uoff_t)-1)) @@ -322,8 +321,7 @@ return 1; } -static void mail_index_map_clear(struct mail_index *index, - struct mail_index_map *map) +static void mail_index_map_clear(struct mail_index_map *map) { if (map->buffer != NULL) { i_assert(map->mmap_base == NULL); @@ -332,7 +330,7 @@ } else if (map->mmap_base != NULL) { i_assert(map->buffer == NULL); if (munmap(map->mmap_base, map->mmap_size) < 0) - mail_index_set_syscall_error(index, "munmap()"); + mail_index_set_syscall_error(map->index, "munmap()"); map->mmap_base = NULL; } @@ -358,9 +356,9 @@ } } -static int mail_index_mmap(struct mail_index *index, struct mail_index_map *map, - uoff_t file_size) +static int mail_index_mmap(struct mail_index_map *map, uoff_t file_size) { + struct mail_index *index = map->index; const struct mail_index_header *hdr; unsigned int records_count; @@ -452,9 +450,10 @@ } static int -mail_index_try_read_map(struct mail_index *index, struct mail_index_map *map, +mail_index_try_read_map(struct mail_index_map *map, uoff_t file_size, bool *retry_r, bool try_retry) { + struct mail_index *index = map->index; const struct mail_index_header *hdr; unsigned char read_buf[4096]; const void *buf; @@ -563,10 +562,9 @@ return 1; } -static int -mail_index_read_map(struct mail_index *index, struct mail_index_map *map, - uoff_t file_size) +static int mail_index_read_map(struct mail_index_map *map, uoff_t file_size) { + struct mail_index *index = map->index; mail_index_sync_lost_handler_t *const *handlers; struct stat st; unsigned int i, count; @@ -585,7 +583,7 @@ ret = 0; retry = try_retry; } else { - ret = mail_index_try_read_map(index, map, file_size, + ret = mail_index_try_read_map(map, file_size, &retry, try_retry); } if (ret != 0 || !retry) @@ -646,6 +644,7 @@ memset(&tmp_map, 0, sizeof(tmp_map)); mail_index_header_init(index, &tmp_map.hdr); + tmp_map.index = index; tmp_map.hdr_base = &tmp_map.hdr; /* a bit kludgy way to do this, but it initializes everything @@ -693,18 +692,18 @@ file_size > MAIL_INDEX_MMAP_MIN_SIZE; new_map = mail_index_map_alloc(index); - ret = use_mmap ? mail_index_mmap(index, new_map, file_size) : - mail_index_read_map(index, new_map, file_size); + ret = use_mmap ? mail_index_mmap(new_map, file_size) : + mail_index_read_map(new_map, file_size); if (ret > 0) { /* make sure the header is ok before using this mapping */ - ret = mail_index_check_header(index, new_map); + ret = mail_index_check_header(new_map); if (ret >= 0) - ret = mail_index_parse_extensions(index, new_map); + ret = mail_index_parse_extensions(new_map); if (ret++ == 0) index->fsck = TRUE; } if (ret <= 0) { - mail_index_unmap(index, &new_map); + mail_index_unmap(&new_map); return ret; } @@ -715,7 +714,7 @@ new_map->hdr.log_file_tail_offset; index->last_read_stat = st; - mail_index_unmap(index, map); + mail_index_unmap(map); *map = new_map; return 1; } @@ -740,7 +739,7 @@ if (index->map->hdr.indexid != 0) { /* we're not creating the index, or opening transaction log. sync this as a view from transaction log. */ - ret = mail_index_sync_map(index, &index->map, type, FALSE); + ret = mail_index_sync_map(&index->map, type, FALSE); } else { ret = 0; } @@ -757,8 +756,7 @@ if (index->log->head != NULL) { /* and update the map with the latest changes from transaction log */ - ret = mail_index_sync_map(index, &index->map, - type, TRUE); + ret = mail_index_sync_map(&index->map, type, TRUE); } /* we need the lock only if we didn't move the map to memory */ @@ -772,7 +770,7 @@ return ret; } -void mail_index_unmap(struct mail_index *index, struct mail_index_map **_map) +void mail_index_unmap(struct mail_index_map **_map) { struct mail_index_map *map = *_map; @@ -781,7 +779,7 @@ return; i_assert(map->refcount == 0); - mail_index_map_clear(index, map); + mail_index_map_clear(map); if (map->extension_pool != NULL) pool_unref(map->extension_pool); if (array_is_created(&map->keyword_idx_map)) @@ -841,6 +839,7 @@ unsigned int i, count; mem_map = i_new(struct mail_index_map, 1); + mem_map->index = map->index; mem_map->refcount = 1; mail_index_map_copy(mem_map, map);
--- a/src/lib-index/mail-index-private.h Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-private.h Sun Jul 01 18:39:51 2007 +0300 @@ -103,6 +103,7 @@ }; struct mail_index_map { + struct mail_index *index; int refcount; struct mail_index_header hdr; @@ -262,15 +263,14 @@ int mail_index_get_last_written_header(struct mail_index *index, struct mail_index_header *hdr_r); /* Unreference given mapping and unmap it if it's dropped to zero. */ -void mail_index_unmap(struct mail_index *index, struct mail_index_map **map); +void mail_index_unmap(struct mail_index_map **map); struct mail_index_map *mail_index_map_clone(const struct mail_index_map *map); void mail_index_map_move_to_memory(struct mail_index_map *map); uint32_t mail_index_map_lookup_ext(struct mail_index_map *map, const char *name); uint32_t -mail_index_map_register_ext(struct mail_index *index, - struct mail_index_map *map, const char *name, +mail_index_map_register_ext(struct mail_index_map *map, const char *name, uint32_t hdr_offset, uint32_t hdr_size, uint32_t record_offset, uint32_t record_size, uint32_t record_align, uint32_t reset_id); @@ -279,8 +279,7 @@ const struct mail_index_ext * mail_index_view_get_ext(struct mail_index_view *view, uint32_t ext_id); -int mail_index_map_parse_keywords(struct mail_index *index, - struct mail_index_map *map); +int mail_index_map_parse_keywords(struct mail_index_map *map); void mail_index_view_transaction_ref(struct mail_index_view *view); void mail_index_view_transaction_unref(struct mail_index_view *view);
--- a/src/lib-index/mail-index-sync-ext.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-sync-ext.c Sun Jul 01 18:39:51 2007 +0300 @@ -400,9 +400,8 @@ sync_ext_reorder() will fix it. */ hdr_offset = hdr_buf->used + sizeof(ext_hdr) + strlen(name); hdr_offset = MAIL_INDEX_HEADER_SIZE_ALIGN(hdr_offset); - ext_id = mail_index_map_register_ext(ctx->view->index, map, name, - hdr_offset, u->hdr_size, 0, - u->record_size, u->record_align, + ext_id = mail_index_map_register_ext(map, name, hdr_offset, u->hdr_size, + 0, u->record_size, u->record_align, u->reset_id); ext = array_idx(&map->extensions, ext_id);
--- a/src/lib-index/mail-index-sync-keywords.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-sync-keywords.c Sun Jul 01 18:39:51 2007 +0300 @@ -16,7 +16,7 @@ unsigned int i, count, keyword_idx; if (!map->keywords_read) { - if (mail_index_map_parse_keywords(ctx->view->index, map) < 0) + if (mail_index_map_parse_keywords(map) < 0) return -1; } if (array_is_created(&map->keyword_idx_map) && @@ -290,8 +290,7 @@ } if (!ctx->view->map->keywords_read) { - if (mail_index_map_parse_keywords(ctx->view->index, - ctx->view->map) < 0) + if (mail_index_map_parse_keywords(ctx->view->map) < 0) return -1; }
--- a/src/lib-index/mail-index-sync-private.h Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-sync-private.h Sun Jul 01 18:39:51 2007 +0300 @@ -47,7 +47,7 @@ struct mail_index_view *view, enum mail_index_sync_handler_type type); void mail_index_sync_map_deinit(struct mail_index_sync_map_ctx *sync_map_ctx); -int mail_index_sync_map(struct mail_index *index, struct mail_index_map **map, +int mail_index_sync_map(struct mail_index_map **map, enum mail_index_sync_handler_type type, bool force); int mail_index_sync_record(struct mail_index_sync_map_ctx *ctx,
--- a/src/lib-index/mail-index-sync-update.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-sync-update.c Sun Jul 01 18:39:51 2007 +0300 @@ -84,7 +84,7 @@ (void)mail_index_map_msync(view->index, view->map); #endif - mail_index_unmap(view->index, &view->map); + mail_index_unmap(&view->map); view->map = map; if (ctx->type != MAIL_INDEX_SYNC_HANDLER_VIEW) @@ -690,10 +690,11 @@ } #endif -int mail_index_sync_map(struct mail_index *index, struct mail_index_map **_map, +int mail_index_sync_map(struct mail_index_map **_map, enum mail_index_sync_handler_type type, bool force) { struct mail_index_map *map = *_map; + struct mail_index *index = map->index; struct mail_index_view *view; struct mail_index_sync_map_ctx sync_map_ctx; const struct mail_transaction_header *thdr; @@ -733,7 +734,7 @@ start_offset = type == MAIL_INDEX_SYNC_HANDLER_FILE ? map->hdr.log_file_tail_offset : map->hdr.log_file_head_offset; - view = mail_index_view_open_with_map(index, map); + view = mail_index_view_open_with_map(map); ret = mail_transaction_log_view_set(view->log_view, map->hdr.log_file_seq, start_offset, (uint32_t)-1, (uoff_t)-1, &reset);
--- a/src/lib-index/mail-index-view-private.h Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-view-private.h Sun Jul 01 18:39:51 2007 +0300 @@ -75,8 +75,7 @@ }; struct mail_index_view * -mail_index_view_open_with_map(struct mail_index *index, - struct mail_index_map *map); +mail_index_view_open_with_map(struct mail_index_map *map); void mail_index_view_clone(struct mail_index_view *dest, const struct mail_index_view *src); void mail_index_view_ref(struct mail_index_view *view);
--- a/src/lib-index/mail-index-view-sync.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-view-sync.c Sun Jul 01 18:39:51 2007 +0300 @@ -285,7 +285,7 @@ if (view->map->refcount > 1) { map = mail_index_map_clone(view->map); - mail_index_unmap(view->index, &view->map); + mail_index_unmap(&view->map); view->map = map; } else { map = view->map; @@ -591,7 +591,7 @@ } if (view->sync_new_map != NULL) { - mail_index_unmap(view->index, &view->map); + mail_index_unmap(&view->map); view->map = view->sync_new_map; view->sync_new_map = NULL; }
--- a/src/lib-index/mail-index-view.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index-view.c Sun Jul 01 18:39:51 2007 +0300 @@ -47,7 +47,7 @@ if (array_is_created(&view->syncs_hidden)) array_free(&view->syncs_hidden); - mail_index_unmap(view->index, &view->map); + mail_index_unmap(&view->map); if (array_is_created(&view->map_refs)) { mail_index_view_unref_maps(view); array_free(&view->map_refs); @@ -174,7 +174,7 @@ maps = array_get_modifiable(&view->map_refs, &count); for (i = 0; i < count; i++) - mail_index_unmap(view->index, &maps[i]); + mail_index_unmap(&maps[i]); array_clear(&view->map_refs); } @@ -553,8 +553,7 @@ if (idx >= keyword_count) { /* keyword header was updated, parse it again it so we know what this keyword is called */ - if (mail_index_map_parse_keywords(view->index, - map) < 0) + if (mail_index_map_parse_keywords(map) < 0) return -1; if (!array_is_created(&map->keyword_idx_map)) @@ -671,18 +670,17 @@ }; struct mail_index_view * -mail_index_view_open_with_map(struct mail_index *index, - struct mail_index_map *map) +mail_index_view_open_with_map(struct mail_index_map *map) { struct mail_index_view *view; view = i_new(struct mail_index_view, 1); view->refcount = 1; view->v = view_vfuncs; - view->index = index; - view->log_view = mail_transaction_log_view_open(index->log); + view->index = map->index; + view->log_view = mail_transaction_log_view_open(map->index->log); - view->indexid = index->indexid; + view->indexid = map->index->indexid; view->map = map; view->map->refcount++; @@ -700,7 +698,7 @@ struct mail_index_view *mail_index_view_open(struct mail_index *index) { - return mail_index_view_open_with_map(index, index->map); + return mail_index_view_open_with_map(index->map); } const struct mail_index_ext *
--- a/src/lib-index/mail-index.c Sun Jul 01 02:12:50 2007 +0300 +++ b/src/lib-index/mail-index.c Sun Jul 01 18:39:51 2007 +0300 @@ -209,9 +209,9 @@ return TRUE; } -int mail_index_map_parse_keywords(struct mail_index *index, - struct mail_index_map *map) +int mail_index_map_parse_keywords(struct mail_index_map *map) { + struct mail_index *index = map->index; const struct mail_index_ext *ext; const struct mail_index_keyword_header *kw_hdr; const struct mail_index_keyword_header_rec *kw_rec; @@ -319,7 +319,7 @@ { /* Make sure all the keywords are in index->keywords. It's quick to do if nothing has changed. */ - (void)mail_index_map_parse_keywords(index, index->map); + (void)mail_index_map_parse_keywords(index->map); return &index->keywords; } @@ -531,7 +531,7 @@ void mail_index_close(struct mail_index *index) { if (index->map != NULL) - mail_index_unmap(index, &index->map); + mail_index_unmap(&index->map); mail_index_close_file(index); mail_transaction_log_close(index->log); @@ -647,7 +647,7 @@ /* move index map to memory */ if (!MAIL_INDEX_MAP_IS_IN_MEMORY(index->map)) { map = mail_index_map_clone(index->map); - mail_index_unmap(index, &index->map); + mail_index_unmap(&index->map); index->map = map; }