projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gettime: init 'failed' before use
[fio.git]
/
iolog.c
diff --git
a/iolog.c
b/iolog.c
index e805eaef9a94595cb5327becf0eb931362179b8a..f49895929c34fcc3313a9ce6b6500d1e3277c9b6 100644
(file)
--- a/
iolog.c
+++ b/
iolog.c
@@
-58,6
+58,7
@@
void log_file(struct thread_data *td, struct fio_file *f,
static void iolog_delay(struct thread_data *td, unsigned long delay)
{
unsigned long usec = utime_since_now(&td->last_issue);
static void iolog_delay(struct thread_data *td, unsigned long delay)
{
unsigned long usec = utime_since_now(&td->last_issue);
+ unsigned long this_delay;
if (delay < usec)
return;
if (delay < usec)
return;
@@
-70,7
+71,14
@@
static void iolog_delay(struct thread_data *td, unsigned long delay)
if (delay < 100)
return;
if (delay < 100)
return;
- usec_sleep(td, delay);
+ while (delay && !td->terminate) {
+ this_delay = delay;
+ if (this_delay > 500000)
+ this_delay = 500000;
+
+ usec_sleep(td, this_delay);
+ delay -= this_delay;
+ }
}
static int ipo_special(struct thread_data *td, struct io_piece *ipo)
}
static int ipo_special(struct thread_data *td, struct io_piece *ipo)
@@
-371,7
+379,7
@@
static int read_iolog2(struct thread_data *td, FILE *f)
} else {
ipo->offset = offset;
ipo->len = bytes;
} else {
ipo->offset = offset;
ipo->len = bytes;
- if (bytes > td->o.max_bs[rw])
+ if (
rw != DDIR_INVAL &&
bytes > td->o.max_bs[rw])
td->o.max_bs[rw] = bytes;
ipo->fileno = fileno;
ipo->file_action = file_action;
td->o.max_bs[rw] = bytes;
ipo->fileno = fileno;
ipo->file_action = file_action;