[dovecot-cvs] dovecot/src/lib-index mail-index-fsck.c, 1.18,
1.19 mail-index-lock.c, 1.11, 1.12 mail-index-private.h, 1.11,
1.12 mail-index-reset.c, 1.3, 1.4 mail-index.c, 1.114, 1.115
cras at procontrol.fi
cras at procontrol.fi
Sat May 1 19:22:57 EEST 2004
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-index-lock.c, 1.10,
1.11 mail-index-private.h, 1.10, 1.11 mail-index-reset.c, 1.2,
1.3 mail-index-view.c, 1.5, 1.6 mail-index.c, 1.113,
1.114 mail-transaction-log-view.c, 1.7,
1.8 mail-transaction-log.c, 1.13, 1.14 mail-transaction-log.h,
1.4, 1.5
- Next message: [dovecot-cvs] dovecot/src/lib-index Makefile.am, 1.16,
1.17 mail-index-private.h, 1.12, 1.13 mail-index.h, 1.100,
1.101 mail-index-reset.c, 1.4, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv20191
Modified Files:
mail-index-fsck.c mail-index-lock.c mail-index-private.h
mail-index-reset.c mail-index.c
Log Message:
missing index file fixes
Index: mail-index-fsck.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-fsck.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mail-index-fsck.c 29 Apr 2004 12:59:16 -0000 1.18
+++ mail-index-fsck.c 1 May 2004 16:22:54 -0000 1.19
@@ -130,6 +130,6 @@
index->filepath, error);
}
if (ret == 0)
- mail_index_reset(index);
+ mail_index_mark_corrupted(index);
return ret;
}
Index: mail-index-lock.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-lock.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mail-index-lock.c 1 May 2004 16:08:15 -0000 1.11
+++ mail-index-lock.c 1 May 2004 16:22:54 -0000 1.12
@@ -106,7 +106,7 @@
return -1;
/* lost it? recreate */
- (void)mail_index_reset(index);
+ (void)mail_index_mark_corrupted(index);
return -1;
}
Index: mail-index-private.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-private.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mail-index-private.h 1 May 2004 16:08:15 -0000 1.11
+++ mail-index-private.h 1 May 2004 16:22:54 -0000 1.12
@@ -128,6 +128,7 @@
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);
Index: mail-index-reset.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-reset.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mail-index-reset.c 1 May 2004 16:08:15 -0000 1.3
+++ mail-index-reset.c 1 May 2004 16:22:54 -0000 1.4
@@ -36,6 +36,7 @@
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;
@@ -48,19 +49,23 @@
if (mail_index_mark_corrupted(index) < 0)
return -1;
- log_locked = index->log_locked;
+ /*log_locked = index->log_locked;
if (log_locked)
mail_transaction_log_sync_unlock(index->log);
- mail_index_close(index);
- if (mail_index_open(index, MAIL_INDEX_OPEN_FLAG_CREATE) < 0)
+ 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;
}
Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -d -r1.114 -r1.115
--- mail-index.c 1 May 2004 16:08:15 -0000 1.114
+++ mail-index.c 1 May 2004 16:22:54 -0000 1.115
@@ -655,6 +655,34 @@
index->indexid = 0;
}
+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_set_syscall_error(struct mail_index *index,
const char *function)
{
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-index-lock.c, 1.10,
1.11 mail-index-private.h, 1.10, 1.11 mail-index-reset.c, 1.2,
1.3 mail-index-view.c, 1.5, 1.6 mail-index.c, 1.113,
1.114 mail-transaction-log-view.c, 1.7,
1.8 mail-transaction-log.c, 1.13, 1.14 mail-transaction-log.h,
1.4, 1.5
- Next message: [dovecot-cvs] dovecot/src/lib-index Makefile.am, 1.16,
1.17 mail-index-private.h, 1.12, 1.13 mail-index.h, 1.100,
1.101 mail-index-reset.c, 1.4, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list