dovecot-2.0: index: Removed duplication of mail_index_open_flags...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Jul 31 00:52:47 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/126132cb1c19
changeset: 9696:126132cb1c19
user: Timo Sirainen <tss at iki.fi>
date: Thu Jul 30 17:52:41 2009 -0400
description:
index: Removed duplication of mail_index_open_flags from struct mail_index.
diffstat:
17 files changed, 87 insertions(+), 70 deletions(-)
src/lib-index/mail-cache-compress.c | 2 -
src/lib-index/mail-cache-sync-update.c | 10 +++++----
src/lib-index/mail-cache-transaction.c | 2 -
src/lib-index/mail-cache.c | 22 +++++++++++----------
src/lib-index/mail-index-lock.c | 2 -
src/lib-index/mail-index-map-read.c | 6 ++---
src/lib-index/mail-index-private.h | 7 ------
src/lib-index/mail-index-strmap.c | 9 +++++---
src/lib-index/mail-index-sync-update.c | 2 -
src/lib-index/mail-index-write.c | 14 ++++++++-----
src/lib-index/mail-index.c | 27 ++++++++++----------------
src/lib-index/mail-transaction-log-append.c | 5 ++--
src/lib-index/mail-transaction-log-file.c | 12 ++++++-----
src/lib-index/mail-transaction-log-private.h | 1
src/lib-index/mail-transaction-log.c | 18 +++++++++++------
src/lib-index/mailbox-list-index-sync.c | 4 ++-
src/lib-index/mailbox-list-index.c | 14 ++++++++-----
diffs (truncated from 519 to 300 lines):
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-cache-compress.c
--- a/src/lib-index/mail-cache-compress.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-cache-compress.c Thu Jul 30 17:52:41 2009 -0400
@@ -296,7 +296,7 @@ mail_cache_copy(struct mail_cache *cache
o_stream_destroy(&output);
- if (cache->index->nfs_flush) {
+ if ((cache->index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
if (fdatasync(fd) < 0) {
mail_cache_set_syscall_error(cache, "fdatasync()");
array_free(ext_offsets);
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-cache-sync-update.c
--- a/src/lib-index/mail-cache-sync-update.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-cache-sync-update.c Thu Jul 30 17:52:41 2009 -0400
@@ -111,7 +111,8 @@ int mail_cache_sync_handler(struct mail_
void **context)
{
struct mail_index_view *view = sync_ctx->view;
- struct mail_cache *cache = view->index->cache;
+ struct mail_index *index = view->index;
+ struct mail_cache *cache = index->cache;
struct mail_cache_sync_context *ctx = *context;
const uint32_t *old_cache_offset = old_data;
const uint32_t *new_cache_offset = new_data;
@@ -128,9 +129,10 @@ int mail_cache_sync_handler(struct mail_
ctx = mail_cache_handler_init(context);
if (cache->file_cache != NULL && !MAIL_CACHE_IS_UNUSABLE(cache)) {
/* flush read cache only once per sync */
- if (!ctx->nfs_read_cache_flushed && cache->index->nfs_flush) {
+ if (!ctx->nfs_read_cache_flushed &&
+ (index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
ctx->nfs_read_cache_flushed = TRUE;
- mail_index_flush_read_cache(cache->index,
+ mail_index_flush_read_cache(index,
cache->filepath, cache->fd,
cache->locked);
}
@@ -151,7 +153,7 @@ int mail_cache_sync_handler(struct mail_
mail_transaction_log_view_get_prev_pos(view->log_view,
&cur_seq, &cur_offset);
- mail_transaction_log_get_mailbox_sync_pos(view->index->log,
+ mail_transaction_log_get_mailbox_sync_pos(index->log,
&tail_seq, &tail_offset);
if (LOG_IS_BEFORE(cur_seq, cur_offset, tail_seq, tail_offset)) {
/* already been linked */
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-cache-transaction.c
--- a/src/lib-index/mail-cache-transaction.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-cache-transaction.c Thu Jul 30 17:52:41 2009 -0400
@@ -839,7 +839,7 @@ mail_cache_header_fields_write(struct ma
if (mail_cache_write(cache, buffer->data, size, offset) < 0)
return -1;
- if (cache->index->nfs_flush) {
+ if ((cache->index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
if (fdatasync(cache->fd) < 0) {
mail_cache_set_syscall_error(cache, "fdatasync()");
return -1;
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-cache.c
--- a/src/lib-index/mail-cache.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-cache.c Thu Jul 30 17:52:41 2009 -0400
@@ -19,7 +19,8 @@ void mail_cache_set_syscall_error(struct
if (ENOSPACE(errno)) {
cache->index->nodiskspace = TRUE;
- if (!cache->index->never_in_memory)
+ if ((cache->index->flags &
+ MAIL_INDEX_OPEN_FLAG_NEVER_IN_MEMORY) == 0)
return;
}
@@ -111,7 +112,7 @@ static bool mail_cache_need_reopen(struc
return TRUE;
/* see if the file has changed */
- if (cache->index->nfs_flush) {
+ if ((cache->index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
i_assert(!cache->locked);
nfs_flush_file_handle_cache(cache->filepath);
}
@@ -126,7 +127,7 @@ static bool mail_cache_need_reopen(struc
return TRUE;
}
- if (cache->index->nfs_flush) {
+ if ((cache->index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
/* if the old file has been deleted, the new file may have
the same inode as the old one. we'll catch this here by
checking if fstat() fails with ESTALE */
@@ -413,15 +414,16 @@ static struct mail_cache *mail_cache_all
hash_table_create(default_pool, cache->field_pool, 0,
strcase_hash, (hash_cmp_callback_t *)strcasecmp);
- cache->dotlock_settings.use_excl_lock = index->use_excl_dotlocks;
- cache->dotlock_settings.nfs_flush = index->nfs_flush;
+ cache->dotlock_settings.use_excl_lock =
+ (index->flags & MAIL_INDEX_OPEN_FLAG_DOTLOCK_USE_EXCL) != 0;
+ cache->dotlock_settings.nfs_flush =
+ (index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0;
cache->dotlock_settings.timeout = MAIL_CACHE_LOCK_TIMEOUT;
cache->dotlock_settings.stale_timeout = MAIL_CACHE_LOCK_CHANGE_TIMEOUT;
- if (!MAIL_INDEX_IS_IN_MEMORY(index)) {
- if (index->mmap_disable)
- cache->file_cache = file_cache_new(-1);
- }
+ if (!MAIL_INDEX_IS_IN_MEMORY(index) &&
+ (index->flags & MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE) != 0)
+ cache->file_cache = file_cache_new(-1);
cache->ext_id =
mail_index_ext_register(index, "cache", 0,
@@ -653,7 +655,7 @@ int mail_cache_unlock(struct mail_cache
mail_cache_update_need_compress(cache);
}
- if (cache->index->nfs_flush) {
+ if ((cache->index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
if (fdatasync(cache->fd) < 0)
mail_cache_set_syscall_error(cache, "fdatasync()");
}
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index-lock.c
--- a/src/lib-index/mail-index-lock.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index-lock.c Thu Jul 30 17:52:41 2009 -0400
@@ -123,7 +123,7 @@ void mail_index_flush_read_cache(struct
void mail_index_flush_read_cache(struct mail_index *index, const char *path,
int fd, bool locked)
{
- if (!index->nfs_flush)
+ if ((index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) == 0)
return;
/* Assume flock() is emulated with fcntl(), because that's how most
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index-map-read.c
--- a/src/lib-index/mail-index-map-read.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index-map-read.c Thu Jul 30 17:52:41 2009 -0400
@@ -317,7 +317,7 @@ static int mail_index_map_latest_file(st
if (mail_index_lock_shared(index, &lock_id) < 0)
return -1;
- if (index->nfs_flush)
+ if ((index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0)
nfs_flush_attr_cache_fd_locked(index->filepath, index->fd);
if (fstat(index->fd, &st) == 0)
@@ -333,8 +333,8 @@ static int mail_index_map_latest_file(st
/* mmaping seems to be slower than just reading the file, so even if
mmap isn't disabled don't use it unless the file is large enough */
- use_mmap = !index->mmap_disable && file_size != (uoff_t)-1 &&
- file_size > MAIL_INDEX_MMAP_MIN_SIZE;
+ use_mmap = (index->flags & MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE) == 0 &&
+ file_size != (uoff_t)-1 && file_size > MAIL_INDEX_MMAP_MIN_SIZE;
new_map = mail_index_map_alloc(index);
if (use_mmap) {
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index-private.h
--- a/src/lib-index/mail-index-private.h Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index-private.h Thu Jul 30 17:52:41 2009 -0400
@@ -170,6 +170,7 @@ struct mail_index {
struct mail_cache *cache;
struct mail_transaction_log *log;
+ enum mail_index_open_flags flags;
enum mail_index_sync_type fsync_mask;
mode_t mode;
gid_t gid;
@@ -223,12 +224,7 @@ struct mail_index {
unsigned int opened:1;
unsigned int log_locked:1;
- unsigned int mmap_disable:1;
- unsigned int fsync_disable:1;
- unsigned int use_excl_dotlocks:1;
- unsigned int nfs_flush:1;
unsigned int readonly:1;
- unsigned int keep_backups:1;
unsigned int mapping:1;
unsigned int syncing:1;
unsigned int need_recreate:1;
@@ -236,7 +232,6 @@ struct mail_index {
unsigned int modseqs_enabled:1;
unsigned int initial_create:1;
unsigned int initial_mapped:1;
- unsigned int never_in_memory:1;
};
extern struct mail_index_module_register mail_index_module_register;
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index-strmap.c
--- a/src/lib-index/mail-index-strmap.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index-strmap.c Thu Jul 30 17:52:41 2009 -0400
@@ -108,8 +108,10 @@ mail_index_strmap_init(struct mail_index
strmap->fd = -1;
strmap->dotlock_settings = default_dotlock_settings;
- strmap->dotlock_settings.use_excl_lock = index->use_excl_dotlocks;
- strmap->dotlock_settings.nfs_flush = index->nfs_flush;
+ strmap->dotlock_settings.use_excl_lock =
+ (index->flags & MAIL_INDEX_OPEN_FLAG_DOTLOCK_USE_EXCL) != 0;
+ strmap->dotlock_settings.nfs_flush =
+ (index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0;
return strmap;
}
@@ -125,7 +127,8 @@ mail_index_strmap_set_syscall_error(stru
if (ENOSPACE(errno)) {
strmap->index->nodiskspace = TRUE;
- if (!strmap->index->never_in_memory)
+ if ((strmap->index->flags &
+ MAIL_INDEX_OPEN_FLAG_NEVER_IN_MEMORY) == 0)
return;
}
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index-sync-update.c
--- a/src/lib-index/mail-index-sync-update.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index-sync-update.c Thu Jul 30 17:52:41 2009 -0400
@@ -860,7 +860,7 @@ int mail_index_sync_map(struct mail_inde
start_offset = type == MAIL_INDEX_SYNC_HANDLER_FILE ?
map->hdr.log_file_tail_offset : map->hdr.log_file_head_offset;
- if (!force && !index->mmap_disable) {
+ if (!force && (index->flags & MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE) == 0) {
/* see if we'd prefer to reopen the index file instead of
syncing the current map from the transaction log.
don't check this if mmap is disabled, because reopening
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index-write.c
--- a/src/lib-index/mail-index-write.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index-write.c Thu Jul 30 17:52:41 2009 -0400
@@ -78,9 +78,13 @@ static int mail_index_recreate(struct ma
}
o_stream_destroy(&output);
- if (ret == 0 && !index->fsync_disable && fdatasync(fd) < 0) {
- mail_index_file_set_syscall_error(index, path, "fdatasync()");
- ret = -1;
+ if (ret == 0 &&
+ (index->flags & MAIL_INDEX_OPEN_FLAG_FSYNC_DISABLE) == 0) {
+ if (fdatasync(fd) < 0) {
+ mail_index_file_set_syscall_error(index, path,
+ "fdatasync()");
+ ret = -1;
+ }
}
if (close(fd) < 0) {
@@ -88,7 +92,7 @@ static int mail_index_recreate(struct ma
ret = -1;
}
- if (index->keep_backups)
+ if ((index->flags & MAIL_INDEX_OPEN_FLAG_KEEP_BACKUPS) != 0)
mail_index_create_backup(index);
if (ret == 0 && rename(path, index->filepath) < 0) {
@@ -241,7 +245,7 @@ void mail_index_write(struct mail_index
ret = mail_index_write_map_over(index);
if (ret < 0)
mail_index_set_syscall_error(index, "pwrite_full()");
- else if (index->nfs_flush) {
+ else if ((index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0) {
ret = fdatasync(index->fd);
if (ret < 0) {
mail_index_set_syscall_error(index,
diff -r cff3cb25a3e9 -r 126132cb1c19 src/lib-index/mail-index.c
--- a/src/lib-index/mail-index.c Thu Jul 30 14:07:13 2009 -0400
+++ b/src/lib-index/mail-index.c Thu Jul 30 17:52:41 2009 -0400
@@ -503,21 +503,15 @@ int mail_index_open(struct mail_index *i
index->nodiskspace = FALSE;
index->index_lock_timeout = FALSE;
index->log_locked = FALSE;
- index->mmap_disable = (flags & MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE) != 0;
- index->use_excl_dotlocks =
- (flags & MAIL_INDEX_OPEN_FLAG_DOTLOCK_USE_EXCL) != 0;
- index->fsync_disable =
- (flags & MAIL_INDEX_OPEN_FLAG_FSYNC_DISABLE) != 0;
- index->nfs_flush = (flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0;
+ index->flags = flags;
index->readonly = (flags & MAIL_INDEX_OPEN_FLAG_READONLY) != 0;
- index->keep_backups = (flags & MAIL_INDEX_OPEN_FLAG_KEEP_BACKUPS) != 0;
- index->never_in_memory =
- (flags & MAIL_INDEX_OPEN_FLAG_NEVER_IN_MEMORY) != 0;
index->lock_method = lock_method;
- if (index->nfs_flush && index->fsync_disable)
+ if ((flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0 &&
+ (flags & MAIL_INDEX_OPEN_FLAG_FSYNC_DISABLE) != 0)
i_fatal("nfs flush requires fsync_disable=no");
- if (index->nfs_flush && !index->mmap_disable)
+ if ((flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) != 0 &&
+ (flags & MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE) == 0)
i_fatal("nfs flush requires mmap_disable=yes");
if ((ret = mail_index_open_files(index, flags)) <= 0) {
@@ -615,7 +609,8 @@ int mail_index_reopen_if_changed(struct
{
struct stat st1, st2;
- i_assert(index->shared_lock_count == 0 || !index->nfs_flush);
More information about the dovecot-cvs
mailing list