From: Timo Sirainen Date: Thu, 25 Aug 2011 00:54:50 +0000 (+0300) Subject: lib-storage: Moved all transaction stats_* to struct mailbox_transaction_stats. X-Git-Tag: 2.1.alpha1~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d01cc1880cf2afd4fb1c8ad7fa6ce78e562e71e;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Moved all transaction stats_* to struct mailbox_transaction_stats. --- diff --git a/src/lib-storage/index/cydir/cydir-mail.c b/src/lib-storage/index/cydir/cydir-mail.c index a4aedbd4ba..112d797ce7 100644 --- a/src/lib-storage/index/cydir/cydir-mail.c +++ b/src/lib-storage/index/cydir/cydir-mail.c @@ -25,7 +25,7 @@ static int cydir_mail_stat(struct mail *mail, struct stat *st_r) if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE) return mail_set_aborted(mail); - mail->transaction->stats_stat_lookup_count++; + mail->transaction->stats.stat_lookup_count++; path = cydir_mail_get_path(mail); if (stat(path, st_r) < 0) { if (errno == ENOENT) @@ -99,7 +99,7 @@ cydir_mail_get_stream(struct mail *_mail, struct message_size *hdr_size, int fd; if (mail->data.stream == NULL) { - _mail->transaction->stats_open_lookup_count++; + _mail->transaction->stats.open_lookup_count++; path = cydir_mail_get_path(_mail); fd = open(path, O_RDONLY); if (fd == -1) { diff --git a/src/lib-storage/index/dbox-common/dbox-mail.c b/src/lib-storage/index/dbox-common/dbox-mail.c index fc4806dcd4..a1e6fd822b 100644 --- a/src/lib-storage/index/dbox-common/dbox-mail.c +++ b/src/lib-storage/index/dbox-common/dbox-mail.c @@ -145,7 +145,7 @@ int dbox_mail_get_save_date(struct mail *_mail, time_t *date_r) if (storage->v.mail_open(mail, &offset, &file) < 0) return -1; - _mail->transaction->stats_fstat_lookup_count++; + _mail->transaction->stats.fstat_lookup_count++; if (dbox_file_stat(file, &st) < 0) { if (errno == ENOENT) mail_set_expunged(_mail); diff --git a/src/lib-storage/index/dbox-multi/mdbox-mail.c b/src/lib-storage/index/dbox-multi/mdbox-mail.c index b56c240ac3..b596c0fb37 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-mail.c +++ b/src/lib-storage/index/dbox-multi/mdbox-mail.c @@ -126,7 +126,7 @@ int mdbox_mail_open(struct dbox_mail *mail, uoff_t *offset_r, } if (!dbox_file_is_open(mail->open_file)) - _mail->transaction->stats_open_lookup_count++; + _mail->transaction->stats.open_lookup_count++; if (dbox_file_open(mail->open_file, &deleted) <= 0) return -1; if (deleted) { diff --git a/src/lib-storage/index/dbox-single/sdbox-mail.c b/src/lib-storage/index/dbox-single/sdbox-mail.c index 5875bae42f..10ddb4c5b3 100644 --- a/src/lib-storage/index/dbox-single/sdbox-mail.c +++ b/src/lib-storage/index/dbox-single/sdbox-mail.c @@ -68,7 +68,7 @@ int sdbox_mail_open(struct dbox_mail *mail, uoff_t *offset_r, if (!sdbox_mail_file_set(mail)) { if (!dbox_file_is_open(mail->open_file)) - _mail->transaction->stats_open_lookup_count++; + _mail->transaction->stats.open_lookup_count++; if (dbox_file_open(mail->open_file, &deleted) <= 0) return -1; if (deleted) { diff --git a/src/lib-storage/index/index-mail-headers.c b/src/lib-storage/index/index-mail-headers.c index 410b9851a3..57091da817 100644 --- a/src/lib-storage/index/index-mail-headers.c +++ b/src/lib-storage/index/index-mail-headers.c @@ -625,7 +625,7 @@ index_mail_get_raw_headers(struct index_mail *mail, const char *field, *value_r = index_mail_get_parsed_header(mail, field_idx); return 0; } - _mail->transaction->stats_cache_hit_count++; + _mail->transaction->stats.cache_hit_count++; data = buffer_get_modifiable_data(dest, &len); if (len == 0) { @@ -807,7 +807,7 @@ int index_mail_get_header_stream(struct mail *_mail, if (mail_cache_lookup_headers(_mail->transaction->cache_view, dest, _mail->seq, headers->idx, headers->count) > 0) { - _mail->transaction->stats_cache_hit_count++; + _mail->transaction->stats.cache_hit_count++; if (mail->data.filter_stream != NULL) i_stream_destroy(&mail->data.filter_stream); mail->data.filter_stream = diff --git a/src/lib-storage/index/index-mail.c b/src/lib-storage/index/index-mail.c index 1ade73a314..26074bce1e 100644 --- a/src/lib-storage/index/index-mail.c +++ b/src/lib-storage/index/index-mail.c @@ -50,7 +50,7 @@ int index_mail_cache_lookup_field(struct index_mail *mail, buffer_t *buf, ret = mail_cache_lookup_field(mail->mail.mail.transaction->cache_view, buf, mail->data.seq, field_idx); if (ret > 0) - mail->mail.mail.transaction->stats_cache_hit_count++; + mail->mail.mail.transaction->stats.cache_hit_count++; return ret; } diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index 8101a645e4..5e4e9ae3b6 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -1198,12 +1198,12 @@ int index_storage_search_deinit(struct mail_search_context *_ctx) static unsigned long long search_get_cost(struct mailbox_transaction_context *trans) { - return trans->stats_open_lookup_count * SEARCH_COST_DENTRY + - trans->stats_stat_lookup_count * SEARCH_COST_DENTRY + - trans->stats_fstat_lookup_count * SEARCH_COST_ATTR + - trans->stats_cache_hit_count * SEARCH_COST_CACHE + - trans->stats_files_read_count * SEARCH_COST_FILES_READ + - (trans->stats_files_read_bytes/1024) * SEARCH_COST_KBYTE; + return trans->stats.open_lookup_count * SEARCH_COST_DENTRY + + trans->stats.stat_lookup_count * SEARCH_COST_DENTRY + + trans->stats.fstat_lookup_count * SEARCH_COST_ATTR + + trans->stats.cache_hit_count * SEARCH_COST_CACHE + + trans->stats.files_read_count * SEARCH_COST_FILES_READ + + (trans->stats.files_read_bytes/1024) * SEARCH_COST_KBYTE; } static int search_match_once(struct index_search_context *ctx) diff --git a/src/lib-storage/index/istream-mail-stats.c b/src/lib-storage/index/istream-mail-stats.c index 9b7b1db08d..1a55f8f1cc 100644 --- a/src/lib-storage/index/istream-mail-stats.c +++ b/src/lib-storage/index/istream-mail-stats.c @@ -24,10 +24,10 @@ i_stream_mail_stats_read_mail_stats(struct istream_private *stream) ret = i_stream_read_copy_from_parent(&stream->istream); if (ret > 0) { - mstream->trans->stats_files_read_bytes += ret; + mstream->trans->stats.files_read_bytes += ret; if (!mstream->files_read_increased) { mstream->files_read_increased = TRUE; - mstream->trans->stats_files_read_count++; + mstream->trans->stats.files_read_count++; } } return ret; diff --git a/src/lib-storage/index/maildir/maildir-mail.c b/src/lib-storage/index/maildir/maildir-mail.c index 9920e412dd..7b83adb8c2 100644 --- a/src/lib-storage/index/maildir/maildir-mail.c +++ b/src/lib-storage/index/maildir/maildir-mail.c @@ -71,7 +71,7 @@ maildir_open_mail(struct maildir_mailbox *mbox, struct mail *mail, ctx.fd = -1; ctx.path = NULL; - mail->transaction->stats_open_lookup_count++; + mail->transaction->stats.open_lookup_count++; if (!mail->saving) { if (maildir_file_do(mbox, mail->uid, do_open, &ctx) < 0) return NULL; @@ -120,13 +120,13 @@ static int maildir_mail_stat(struct mail *mail, struct stat *st) } if (imail->data.stream != NULL) { - mail->transaction->stats_fstat_lookup_count++; + mail->transaction->stats.fstat_lookup_count++; stp = i_stream_stat(imail->data.stream, FALSE); if (stp == NULL) return -1; *st = *stp; } else if (!mail->saving) { - mail->transaction->stats_stat_lookup_count++; + mail->transaction->stats.stat_lookup_count++; ret = maildir_file_do(mbox, mail->uid, do_stat, st); if (ret <= 0) { if (ret == 0) @@ -134,7 +134,7 @@ static int maildir_mail_stat(struct mail *mail, struct stat *st) return -1; } } else { - mail->transaction->stats_stat_lookup_count++; + mail->transaction->stats.stat_lookup_count++; path = maildir_save_file_get_path(mail->transaction, mail->seq); if (stat(path, st) < 0) { mail_storage_set_critical(mail->box->storage, diff --git a/src/lib-storage/index/raw/raw-mail.c b/src/lib-storage/index/raw/raw-mail.c index 2b2dd0879a..29d4039177 100644 --- a/src/lib-storage/index/raw/raw-mail.c +++ b/src/lib-storage/index/raw/raw-mail.c @@ -17,7 +17,7 @@ static int raw_mail_stat(struct mail *mail) if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE) return mail_set_aborted(mail); - mail->transaction->stats_fstat_lookup_count++; + mail->transaction->stats.fstat_lookup_count++; st = i_stream_stat(mail->box->input, TRUE); if (st == NULL) { mail_storage_set_critical(mail->box->storage, diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index 400c6e5996..75551b5cf2 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -345,6 +345,18 @@ union mailbox_transaction_module_context { struct mail_storage_module_register *reg; }; +struct mailbox_transaction_stats { + unsigned long open_lookup_count; + unsigned long stat_lookup_count; + unsigned long fstat_lookup_count; + /* number of files we've opened and read */ + unsigned long files_read_count; + /* number of bytes we've had to read from files */ + unsigned long long files_read_bytes; + /* number of cache lookup hits */ + unsigned long cache_hit_count; +}; + struct mailbox_transaction_context { struct mailbox *box; enum mailbox_transaction_flags flags; @@ -367,17 +379,7 @@ struct mailbox_transaction_context { struct mail_save_context *save_ctx; /* these statistics are never reset by mail-storage API: */ - - unsigned long stats_open_lookup_count; - unsigned long stats_stat_lookup_count; - unsigned long stats_fstat_lookup_count; - /* number of files we've opened and read */ - unsigned long stats_files_read_count; - /* number of bytes we've had to read from files */ - unsigned long long stats_files_read_bytes; - /* number of cache lookup hits */ - unsigned long stats_cache_hit_count; - + struct mailbox_transaction_stats stats; /* Set to TRUE to update stats_* fields */ unsigned int stats_track:1; };