projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
init: seed repeatable jobs differently
[fio.git]
/
backend.c
diff --git
a/backend.c
b/backend.c
index 20784096a0d7b9b8e417d0235311b4ab983bfd29..7f57c65ae64678d10f351db12abaa3cfe287d098 100644
(file)
--- a/
backend.c
+++ b/
backend.c
@@
-309,6
+309,8
@@
requeue:
put_io_u(td, io_u);
return true;
} else if (ret == FIO_Q_QUEUED) {
put_io_u(td, io_u);
return true;
} else if (ret == FIO_Q_QUEUED) {
+ if (td_io_commit(td))
+ return true;
if (io_u_queued_complete(td, 1) < 0)
return true;
} else if (ret == FIO_Q_COMPLETED) {
if (io_u_queued_complete(td, 1) < 0)
return true;
} else if (ret == FIO_Q_COMPLETED) {
@@
-520,6
+522,14
@@
sync_done:
if (*ret < 0)
break;
}
if (*ret < 0)
break;
}
+
+ /*
+ * when doing I/O (not when verifying),
+ * check for any errors that are to be ignored
+ */
+ if (!from_verify)
+ break;
+
return 0;
case FIO_Q_QUEUED:
/*
return 0;
case FIO_Q_QUEUED:
/*
@@
-1701,6
+1711,15
@@
err:
cgroup_shutdown(td, &cgroup_mnt);
verify_free_state(td);
cgroup_shutdown(td, &cgroup_mnt);
verify_free_state(td);
+ if (td->zone_state_index) {
+ int i;
+
+ for (i = 0; i < DDIR_RWDIR_CNT; i++)
+ free(td->zone_state_index[i]);
+ free(td->zone_state_index);
+ td->zone_state_index = NULL;
+ }
+
if (fio_option_is_set(o, cpumask)) {
ret = fio_cpuset_exit(&o->cpumask);
if (ret)
if (fio_option_is_set(o, cpumask)) {
ret = fio_cpuset_exit(&o->cpumask);
if (ret)