dovecot-2.2: lib-index: Removed unused locking code.
dovecot at dovecot.org
dovecot at dovecot.org
Fri May 4 00:49:42 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/10a475d725a1
changeset: 14231:10a475d725a1
user: Timo Sirainen <tss at iki.fi>
date: Fri May 04 00:48:45 2012 +0300
description:
lib-index: Removed unused locking code.
diffstat:
src/lib-index/mail-index-lock.c | 91 ++++++++----------------------------
src/lib-index/mail-index-map-read.c | 1 -
src/lib-index/mail-index-private.h | 5 +-
src/lib-index/mail-index.c | 3 -
4 files changed, 21 insertions(+), 79 deletions(-)
diffs (208 lines):
diff -r 4c996a5737b0 -r 10a475d725a1 src/lib-index/mail-index-lock.c
--- a/src/lib-index/mail-index-lock.c Fri May 04 00:41:51 2012 +0300
+++ b/src/lib-index/mail-index-lock.c Fri May 04 00:48:45 2012 +0300
@@ -36,27 +36,15 @@
timeout_secs, lock_r);
}
-static int mail_index_lock(struct mail_index *index, int lock_type,
+static int mail_index_lock(struct mail_index *index,
unsigned int timeout_secs, unsigned int *lock_id_r)
{
int ret;
- i_assert(lock_type == F_RDLCK || lock_type == F_WRLCK);
-
- if (lock_type == F_RDLCK && index->lock_type != F_UNLCK) {
+ if (index->lock_type != F_UNLCK) {
+ /* file is already locked */
index->shared_lock_count++;
*lock_id_r = index->lock_id_counter;
- ret = 1;
- } else if (lock_type == F_WRLCK && index->lock_type == F_WRLCK) {
- index->excl_lock_count++;
- *lock_id_r = index->lock_id_counter + 1;
- ret = 1;
- } else {
- ret = 0;
- }
-
- if (ret > 0) {
- /* file is already locked */
return 1;
}
@@ -65,39 +53,25 @@
/* FIXME: exclusive locking will rewrite the index file every
time. shouldn't really be needed.. reading doesn't require
locks then, though */
- if (lock_type == F_WRLCK)
- return 0;
-
index->shared_lock_count++;
index->lock_type = F_RDLCK;
*lock_id_r = index->lock_id_counter;
return 1;
}
- if (index->file_lock == NULL) {
- i_assert(index->lock_type == F_UNLCK);
- ret = mail_index_lock_fd(index, index->filepath, index->fd,
- lock_type, timeout_secs,
- &index->file_lock);
- } else {
- i_assert(index->lock_type == F_RDLCK && lock_type == F_WRLCK);
- ret = file_lock_try_update(index->file_lock, lock_type);
- }
+ i_assert(index->lock_type == F_UNLCK);
+ ret = mail_index_lock_fd(index, index->filepath, index->fd,
+ F_RDLCK, timeout_secs,
+ &index->file_lock);
if (ret <= 0)
return ret;
if (index->lock_type == F_UNLCK)
index->lock_id_counter += 2;
- index->lock_type = lock_type;
+ index->lock_type = F_RDLCK;
- if (lock_type == F_RDLCK) {
- index->shared_lock_count++;
- *lock_id_r = index->lock_id_counter;
- } else {
- index->excl_lock_count++;
- *lock_id_r = index->lock_id_counter + 1;
- }
-
+ index->shared_lock_count++;
+ *lock_id_r = index->lock_id_counter;
return 1;
}
@@ -125,7 +99,7 @@
timeout_secs = I_MIN(MAIL_INDEX_SHARED_LOCK_TIMEOUT,
index->max_lock_timeout_secs);
- ret = mail_index_lock(index, F_RDLCK, timeout_secs, lock_id_r);
+ ret = mail_index_lock(index, timeout_secs, lock_id_r);
if (ret > 0) {
mail_index_flush_read_cache(index, index->filepath,
index->fd, TRUE);
@@ -141,48 +115,23 @@
return -1;
}
-int mail_index_try_lock_exclusive(struct mail_index *index,
- unsigned int *lock_id_r)
-{
- int ret;
-
- if ((ret = mail_index_lock(index, F_WRLCK, 0, lock_id_r)) > 0) {
- mail_index_flush_read_cache(index, index->filepath,
- index->fd, TRUE);
- }
- return ret;
-}
-
void mail_index_unlock(struct mail_index *index, unsigned int *_lock_id)
{
unsigned int lock_id = *_lock_id;
*_lock_id = 0;
- if ((lock_id & 1) == 0) {
- /* shared lock */
- if (!mail_index_is_locked(index, lock_id)) {
- /* unlocking some older generation of the index file.
- we've already closed the file so just ignore this. */
- return;
- }
-
- i_assert(index->shared_lock_count > 0);
- index->shared_lock_count--;
- } else {
- /* exclusive lock */
- i_assert(lock_id == index->lock_id_counter + 1);
- i_assert(index->excl_lock_count > 0);
- i_assert(index->lock_type == F_WRLCK);
- if (--index->excl_lock_count == 0 &&
- index->shared_lock_count > 0) {
- /* drop back to a shared lock. */
- index->lock_type = F_RDLCK;
- (void)file_lock_try_update(index->file_lock, F_RDLCK);
- }
+ /* shared lock */
+ if (!mail_index_is_locked(index, lock_id)) {
+ /* unlocking some older generation of the index file.
+ we've already closed the file so just ignore this. */
+ return;
}
- if (index->shared_lock_count == 0 && index->excl_lock_count == 0) {
+ i_assert(index->shared_lock_count > 0);
+ index->shared_lock_count--;
+
+ if (index->shared_lock_count == 0) {
index->lock_id_counter += 2;
index->lock_type = F_UNLCK;
if (index->lock_method != FILE_LOCK_METHOD_DOTLOCK) {
diff -r 4c996a5737b0 -r 10a475d725a1 src/lib-index/mail-index-map-read.c
--- a/src/lib-index/mail-index-map-read.c Fri May 04 00:41:51 2012 +0300
+++ b/src/lib-index/mail-index-map-read.c Fri May 04 00:48:45 2012 +0300
@@ -400,7 +400,6 @@
{
int ret;
- i_assert(index->lock_type != F_WRLCK);
i_assert(!index->mapping);
index->mapping = TRUE;
diff -r 4c996a5737b0 -r 10a475d725a1 src/lib-index/mail-index-private.h
--- a/src/lib-index/mail-index-private.h Fri May 04 00:41:51 2012 +0300
+++ b/src/lib-index/mail-index-private.h Fri May 04 00:48:45 2012 +0300
@@ -205,7 +205,7 @@
/* syncing will update this if non-NULL */
struct mail_index_transaction_commit_result *sync_commit_result;
- int lock_type, shared_lock_count, excl_lock_count;
+ int lock_type, shared_lock_count;
unsigned int lock_id_counter;
enum file_lock_method lock_method;
unsigned int max_lock_timeout_secs;
@@ -275,9 +275,6 @@
/* Returns 0 = ok, -1 = error. */
int mail_index_lock_shared(struct mail_index *index, unsigned int *lock_id_r);
-/* Returns 1 = ok, 0 = already locked, -1 = error. */
-int mail_index_try_lock_exclusive(struct mail_index *index,
- unsigned int *lock_id_r);
void mail_index_unlock(struct mail_index *index, unsigned int *lock_id);
/* Returns TRUE if given lock_id is valid. */
bool mail_index_is_locked(struct mail_index *index, unsigned int lock_id);
diff -r 4c996a5737b0 -r 10a475d725a1 src/lib-index/mail-index.c
--- a/src/lib-index/mail-index.c Fri May 04 00:41:51 2012 +0300
+++ b/src/lib-index/mail-index.c Fri May 04 00:48:45 2012 +0300
@@ -570,7 +570,6 @@
i_strconcat(index->dir, "/", index->prefix, NULL);
index->shared_lock_count = 0;
- index->excl_lock_count = 0;
index->lock_type = F_UNLCK;
index->lock_id_counter = 2;
@@ -629,7 +628,6 @@
index->lock_id_counter += 2;
index->lock_type = F_UNLCK;
index->shared_lock_count = 0;
- index->excl_lock_count = 0;
}
void mail_index_close(struct mail_index *index)
@@ -695,7 +693,6 @@
i_assert(index->shared_lock_count == 0 ||
(index->flags & MAIL_INDEX_OPEN_FLAG_NFS_FLUSH) == 0);
- i_assert(index->excl_lock_count == 0);
if (MAIL_INDEX_IS_IN_MEMORY(index))
return 0;
More information about the dovecot-cvs
mailing list