[dovecot-cvs] dovecot/src/lib-index mail-cache-fields.c, 1.9,
1.10 mail-cache-transaction.c, 1.32, 1.33 mail-cache.c, 1.52, 1.53
cras at dovecot.org
cras at dovecot.org
Mon Nov 8 02:55:04 EET 2004
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.24,
1.25 mail-cache-fields.c, 1.8, 1.9 mail-cache-lookup.c, 1.25,
1.26 mail-cache-private.h, 1.17, 1.18 mail-cache-sync-update.c,
1.1, 1.2 mail-cache-transaction.c, 1.31, 1.32 mail-cache.c,
1.51, 1.52
- Next message: [dovecot-cvs] dovecot/src/lib file-cache.c,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/lib/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv19036/lib-index
Modified Files:
mail-cache-fields.c mail-cache-transaction.c mail-cache.c
Log Message:
More correct file cache invalidating.
Index: mail-cache-fields.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-cache-fields.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- mail-cache-fields.c 8 Nov 2004 00:40:41 -0000 1.9
+++ mail-cache-fields.c 8 Nov 2004 00:55:02 -0000 1.10
@@ -108,6 +108,12 @@
}
offset = next_offset;
+ if (cache->file_cache != NULL) {
+ /* we can't trust that the cached data is valid */
+ file_cache_invalidate(cache->file_cache, offset,
+ sizeof(*field_hdr) +
+ CACHE_HDR_PREFETCH);
+ }
if (mail_cache_map(cache, offset,
sizeof(*field_hdr) + CACHE_HDR_PREFETCH) < 0)
return -1;
@@ -155,6 +161,12 @@
}
if (field_hdr->size > sizeof(*field_hdr) + CACHE_HDR_PREFETCH) {
+ if (cache->file_cache != NULL) {
+ /* we can't trust that the cached data is valid */
+ file_cache_invalidate(cache->file_cache, offset,
+ sizeof(*field_hdr) +
+ CACHE_HDR_PREFETCH);
+ }
if (mail_cache_map(cache, offset, field_hdr->size) < 0)
return -1;
}
@@ -268,7 +280,6 @@
int locked = cache->locked;
buffer_t *buffer;
uint32_t i, offset;
- size_t size;
int ret = 0;
if (!locked) {
@@ -288,8 +299,6 @@
copy_to_buf(cache, buffer,
offsetof(struct mail_cache_field_private, last_used),
sizeof(uint32_t));
- size = buffer->used;
-
ret = pwrite_full(cache->fd, buffer->data,
sizeof(uint32_t) * cache->file_fields_count,
offset + MAIL_CACHE_FIELD_LAST_USED());
@@ -297,7 +306,6 @@
buffer_set_used_size(buffer, 0);
copy_to_buf_byte(cache, buffer,
offsetof(struct mail_cache_field, decision));
- size += buffer->used;
ret = pwrite_full(cache->fd, buffer->data,
sizeof(uint8_t) * cache->file_fields_count, offset +
@@ -310,11 +318,8 @@
}
t_pop();
- if (ret == 0) {
+ if (ret == 0)
cache->field_header_write_pending = FALSE;
- if (cache->file_cache != NULL)
- file_cache_invalidate(cache->file_cache, offset, size);
- }
if (!locked)
mail_cache_unlock(cache);
Index: mail-cache-transaction.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-cache-transaction.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- mail-cache-transaction.c 8 Nov 2004 00:40:41 -0000 1.32
+++ mail-cache-transaction.c 8 Nov 2004 00:55:02 -0000 1.33
@@ -171,10 +171,6 @@
mail_cache_set_syscall_error(cache, "pwrite_full()");
return FALSE;
}
- if (cache->file_cache != NULL) {
- file_cache_invalidate(cache->file_cache, prev_offset,
- sizeof(hole.next_offset));
- }
}
hdr->deleted_space -= hole.size;
cache->hdr_modified = TRUE;
@@ -290,11 +286,6 @@
return;
}
- if (cache->file_cache != NULL) {
- file_cache_invalidate(cache->file_cache, offset,
- sizeof(hole));
- }
-
cache->hdr_copy.deleted_space += size;
cache->hdr_copy.hole_offset = offset;
cache->hdr_modified = TRUE;
@@ -491,10 +482,6 @@
mail_cache_set_syscall_error(cache, "pwrite_full()");
return -1;
}
- if (cache->file_cache != NULL) {
- file_cache_invalidate(cache->file_cache,
- write_offset, max_size);
- }
size = mail_cache_transaction_update_index(ctx, rec, seq,
&seq_idx, seq_limit,
@@ -654,11 +641,6 @@
ret = -1;
else {
/* after it's guaranteed to be in disk, update header offset */
- if (cache->file_cache != NULL) {
- file_cache_invalidate(cache->file_cache, offset, size);
- file_cache_invalidate(cache->file_cache, hdr_offset,
- sizeof(offset));
- }
offset = mail_index_uint32_to_offset(offset);
if (pwrite_full(cache->fd, &offset, sizeof(offset),
hdr_offset) < 0) {
@@ -750,10 +732,6 @@
mail_cache_set_syscall_error(cache, "pwrite_full()");
return -1;
}
- if (cache->file_cache != NULL) {
- file_cache_invalidate(cache->file_cache,
- new_offset, sizeof(old_offset));
- }
return 0;
}
Index: mail-cache.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-cache.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- mail-cache.c 8 Nov 2004 00:40:41 -0000 1.52
+++ mail-cache.c 8 Nov 2004 00:55:02 -0000 1.53
@@ -345,6 +345,10 @@
if (ret > 0) {
/* make sure our header is up to date */
+ if (cache->file_cache != NULL) {
+ file_cache_invalidate(cache->file_cache, 0,
+ sizeof(struct mail_cache_header));
+ }
if (mail_cache_map(cache, 0, 0) < 0)
ret = -1;
cache->hdr_copy = *cache->hdr;
@@ -390,10 +394,6 @@
if (pwrite_full(cache->fd, &cache->hdr_copy,
sizeof(cache->hdr_copy), 0) < 0)
mail_cache_set_syscall_error(cache, "pwrite_full()");
- if (cache->file_cache != NULL) {
- file_cache_invalidate(cache->file_cache, 0,
- sizeof(cache->hdr_copy));
- }
mail_cache_update_need_compress(cache);
}
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.24,
1.25 mail-cache-fields.c, 1.8, 1.9 mail-cache-lookup.c, 1.25,
1.26 mail-cache-private.h, 1.17, 1.18 mail-cache-sync-update.c,
1.1, 1.2 mail-cache-transaction.c, 1.31, 1.32 mail-cache.c,
1.51, 1.52
- Next message: [dovecot-cvs] dovecot/src/lib file-cache.c,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list