X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=log.c;h=a705e5021415ad7069e169ba06906435724d1f37;hp=b151164760a40042e403bfc422245fe83afdab68;hb=311b84aeb3f8eba70191353b4b9fe0a2576f9d95;hpb=f48b467cba78af0843c7320caf841e2bee72fb1e diff --git a/log.c b/log.c index b1511647..a705e502 100644 --- a/log.c +++ b/log.c @@ -5,7 +5,7 @@ void write_iolog_put(struct thread_data *td, struct io_u *io_u) { - fprintf(td->iolog_f, "%d,%llu,%u\n", io_u->ddir, io_u->offset, io_u->buflen); + fprintf(td->iolog_f, "%u,%llu,%u\n", io_u->ddir, io_u->offset, io_u->buflen); } int read_iolog_get(struct thread_data *td, struct io_u *io_u) @@ -125,9 +125,9 @@ static int init_iolog_read(struct thread_data *td) INIT_LIST_HEAD(&ipo->list); ipo->offset = offset; ipo->len = bytes; - if (bytes > td->max_bs) - td->max_bs = bytes; - ipo->ddir = rw; + ipo->ddir = (enum fio_ddir) rw; + if (bytes > td->max_bs[rw]) + td->max_bs[rw] = bytes; list_add_tail(&ipo->list, &td->io_log_list); } @@ -180,12 +180,13 @@ int init_iolog(struct thread_data *td) else if (td->write_iolog_file) ret = init_iolog_write(td); - return 0; + return ret; } int setup_rate(struct thread_data *td) { - int nr_reads_per_sec; + unsigned long long rate; + int nr_reads_per_msec; if (!td->rate) return 0; @@ -195,8 +196,14 @@ int setup_rate(struct thread_data *td) return -1; } - nr_reads_per_sec = (td->rate * 1024) / td->min_bs; - td->rate_usec_cycle = 1000000 / nr_reads_per_sec; + rate = td->rate; + nr_reads_per_msec = (rate * 1024 * 1000) / td->min_bs[DDIR_READ]; + if (!nr_reads_per_msec) { + log_err("rate lower than supported\n"); + return -1; + } + + td->rate_usec_cycle = 1000000000ULL / nr_reads_per_msec; td->rate_pending_usleep = 0; return 0; } @@ -211,14 +218,12 @@ void setup_log(struct io_log **log) *log = l; } -void finish_log(struct thread_data *td, struct io_log *log, const char *name) +void __finish_log(struct io_log *log, const char *name) { - char file_name[256]; - FILE *f; unsigned int i; + FILE *f; - snprintf(file_name, 200, "client%d_%s.log", td->thread_number, name); - f = fopen(file_name, "w"); + f = fopen(name, "w"); if (!f) { perror("fopen log"); return; @@ -231,3 +236,11 @@ void finish_log(struct thread_data *td, struct io_log *log, const char *name) free(log->log); free(log); } + +void finish_log(struct thread_data *td, struct io_log *log, const char *name) +{ + char file_name[256]; + + snprintf(file_name, 200, "client%d_%s.log", td->thread_number, name); + __finish_log(log, file_name); +}