dovecot: Don't mmap() transaction log file if we're reading less...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Dec 4 14:48:59 EET 2007
details: http://hg.dovecot.org/dovecot/rev/8c80093fbab4
changeset: 6929:8c80093fbab4
user: Timo Sirainen <tss at iki.fi>
date: Tue Dec 04 14:47:43 2007 +0200
description:
Don't mmap() transaction log file if we're reading less than a page.
diffstat:
1 file changed, 10 insertions(+), 2 deletions(-)
src/lib-index/mail-transaction-log-file.c | 12 ++++++++++--
diffs (36 lines):
diff -r fe777302d928 -r 8c80093fbab4 src/lib-index/mail-transaction-log-file.c
--- a/src/lib-index/mail-transaction-log-file.c Tue Dec 04 14:39:32 2007 +0200
+++ b/src/lib-index/mail-transaction-log-file.c Tue Dec 04 14:47:43 2007 +0200
@@ -1035,7 +1035,8 @@ mail_transaction_log_file_munmap(struct
}
static int
-mail_transaction_log_file_map_mmap(struct mail_transaction_log_file *file)
+mail_transaction_log_file_map_mmap(struct mail_transaction_log_file *file,
+ uoff_t start_offset)
{
struct stat st;
int ret;
@@ -1069,6 +1070,13 @@ mail_transaction_log_file_map_mmap(struc
do {
mail_transaction_log_file_munmap(file);
+
+ if (file->last_size - start_offset < mmap_get_page_size()) {
+ /* just reading the file is probably faster */
+ return mail_transaction_log_file_read(file,
+ start_offset,
+ FALSE);
+ }
if (mail_transaction_log_file_mmap(file) < 0)
return -1;
@@ -1125,7 +1133,7 @@ int mail_transaction_log_file_map(struct
}
if (!index->mmap_disable)
- ret = mail_transaction_log_file_map_mmap(file);
+ ret = mail_transaction_log_file_map_mmap(file, start_offset);
else {
mail_transaction_log_file_munmap(file);
ret = mail_transaction_log_file_read(file, start_offset, FALSE);
More information about the dovecot-cvs
mailing list