projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Still need to put io_u on early exit
[fio.git]
/
log.c
diff --git
a/log.c
b/log.c
index 51eaee6ecae085e6bc71184148ba26bf8574c1e1..dd63c3891b67c65d6fd2903b8bfab0d349a246cb 100644
(file)
--- a/
log.c
+++ b/
log.c
@@
-5,7
+5,7
@@
void write_iolog_put(struct thread_data *td, struct io_u *io_u)
{
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,%l
u\n", io_u->ddir, io_u->offset, io_u->buflen);
}
int read_iolog_get(struct thread_data *td, struct io_u *io_u)
}
int read_iolog_get(struct thread_data *td, struct io_u *io_u)
@@
-93,7
+93,7
@@
static int init_iolog_read(struct thread_data *td)
FILE *f;
int rw, reads, writes;
FILE *f;
int rw, reads, writes;
- f = fopen(td->iolog_file, "r");
+ f = fopen(td->
read_
iolog_file, "r");
if (!f) {
perror("fopen read iolog");
return 1;
if (!f) {
perror("fopen read iolog");
return 1;
@@
-125,9
+125,9
@@
static int init_iolog_read(struct thread_data *td)
INIT_LIST_HEAD(&ipo->list);
ipo->offset = offset;
ipo->len = bytes;
INIT_LIST_HEAD(&ipo->list);
ipo->offset = offset;
ipo->len = bytes;
- i
f (bytes > td->max_bs)
- td->max_bs = bytes;
-
ipo->ddir = rw
;
+ i
po->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);
}
list_add_tail(&ipo->list, &td->io_log_list);
}
@@
-151,9
+151,9
@@
static int init_iolog_read(struct thread_data *td)
*/
static int init_iolog_write(struct thread_data *td)
{
*/
static int init_iolog_write(struct thread_data *td)
{
- FILE *f
= fopen(td->iolog_file, "w")
;
+ FILE *f;
- f = fopen(td->
iolog_file, "w
");
+ f = fopen(td->
write_iolog_file, "w+
");
if (!f) {
perror("fopen write iolog");
return 1;
if (!f) {
perror("fopen write iolog");
return 1;
@@
-170,17
+170,23
@@
static int init_iolog_write(struct thread_data *td)
int init_iolog(struct thread_data *td)
{
int init_iolog(struct thread_data *td)
{
- if (td->read_iolog)
- return init_iolog_read(td);
- else if (td->write_iolog)
- return init_iolog_write(td);
+ int ret = 0;
- return 0;
+ if (td->io_ops->flags & FIO_CPUIO)
+ return 0;
+
+ if (td->read_iolog_file)
+ ret = init_iolog_read(td);
+ else if (td->write_iolog_file)
+ ret = init_iolog_write(td);
+
+ return ret;
}
int setup_rate(struct thread_data *td)
{
}
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;
if (!td->rate)
return 0;
@@
-190,8
+196,14
@@
int setup_rate(struct thread_data *td)
return -1;
}
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;
}
td->rate_pending_usleep = 0;
return 0;
}
@@
-206,14
+218,12
@@
void setup_log(struct io_log **log)
*log = l;
}
*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;
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;
if (!f) {
perror("fopen log");
return;
@@
-226,3
+236,11
@@
void finish_log(struct thread_data *td, struct io_log *log, const char *name)
free(log->log);
free(log);
}
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);
+}