dovecot: Drop read_highwater position when invalidating if possi...

dovecot at dovecot.org dovecot at dovecot.org
Thu Nov 8 04:10:34 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/f4b266590003
changeset: 6732:f4b266590003
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Nov 08 04:10:30 2007 +0200
description:
Drop read_highwater position when invalidating if possible.

diffstat:

1 file changed, 8 insertions(+), 1 deletion(-)
src/lib/file-cache.c |    9 ++++++++-

diffs (20 lines):

diff -r 42acb5629519 -r f4b266590003 src/lib/file-cache.c
--- a/src/lib/file-cache.c	Thu Nov 08 04:01:03 2007 +0200
+++ b/src/lib/file-cache.c	Thu Nov 08 04:10:30 2007 +0200
@@ -269,8 +269,15 @@ void file_cache_invalidate(struct file_c
 	if (offset >= cache->read_highwater || size == 0)
 		return;
 
-	if (size > cache->read_highwater - offset)
+	if (size > cache->read_highwater - offset) {
+		/* ignore anything after read highwater */
 		size = cache->read_highwater - offset;
+	}
+	if (size >= cache->read_highwater) {
+		/* we're invalidating everything up to read highwater.
+		   drop the highwater position. */
+		cache->read_highwater = offset & ~(page_size-1);
+	}
 
 	size = (offset + size + page_size-1) / page_size;
 	offset /= page_size;


More information about the dovecot-cvs mailing list