[dovecot-cvs] dovecot/src/lib-index mail-index-lock.c, 1.7,
1.8 mail-index-sync-update.c, 1.4, 1.5 mail-transaction-log.c,
1.5, 1.6
cras at procontrol.fi
cras at procontrol.fi
Wed Apr 28 22:16:25 EEST 2004
Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv12735/lib-index
Modified Files:
mail-index-lock.c mail-index-sync-update.c
mail-transaction-log.c
Log Message:
some more locking fixes
Index: mail-index-lock.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-lock.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mail-index-lock.c 28 Apr 2004 18:52:06 -0000 1.7
+++ mail-index-lock.c 28 Apr 2004 19:16:23 -0000 1.8
@@ -230,8 +230,10 @@
if (fd == -1)
return -1;
- if (index->lock_type == F_UNLCK)
- (void)mail_index_lock_mprotect(index, F_RDLCK);
+ if (index->lock_type == F_UNLCK) {
+ if (mail_index_lock_mprotect(index, F_RDLCK) < 0)
+ return -1;
+ }
ret = write_full(fd, index->map->hdr, sizeof(*index->map->hdr));
if (ret < 0 || write_full(fd, index->map->records,
@@ -288,6 +290,7 @@
return -1;
}
+ (void)mail_index_lock_mprotect(index, F_WRLCK);
return 0;
}
@@ -307,8 +310,10 @@
if (ret < 0)
return -1;
+ if (mail_index_lock_exclusive_copy(index) < 0)
+ return -1;
*lock_id_r = index->lock_id + 1;
- return mail_index_lock_exclusive_copy(index);
+ return 0;
}
static int mail_index_copy_lock_finish(struct mail_index *index)
Index: mail-index-sync-update.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-sync-update.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mail-index-sync-update.c 28 Apr 2004 02:39:03 -0000 1.4
+++ mail-index-sync-update.c 28 Apr 2004 19:16:23 -0000 1.5
@@ -220,6 +220,7 @@
map = mail_index_map_to_memory(map);
mail_index_unmap(index, index->map);
index->map = map;
+ index->hdr = map->hdr;
map->write_to_disk = TRUE;
dest_idx = rec.seq1-1;
Index: mail-transaction-log.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-log.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mail-transaction-log.c 28 Apr 2004 02:39:03 -0000 1.5
+++ mail-transaction-log.c 28 Apr 2004 19:16:23 -0000 1.6
@@ -332,7 +332,6 @@
index->log_locked = FALSE;
return -1;
}
- index->log_locked = FALSE;
ret = mail_index_map(index, FALSE);
if (ret > 0) {
@@ -347,6 +346,7 @@
}
hdr.file_seq = index->hdr->log_file_seq;
mail_index_unlock(index, lock_id);
+ index->log_locked = FALSE;
if (ret <= 0) {
(void)file_dotlock_delete(path, fd);
More information about the dovecot-cvs
mailing list