while (flist_empty(&td->verify_list) &&
!td->verify_thread_exit) {
- ret = pthread_cond_wait(&td->verify_cond, &td->io_u_lock);
+ ret = pthread_cond_wait(&td->verify_cond,
+ &td->io_u_lock);
if (ret) {
pthread_mutex_unlock(&td->io_u_lock);
break;
io_u = flist_entry(list.next, struct io_u, list);
flist_del_init(&io_u->list);
- ret |= verify_io_u(td, io_u);
+ ret = verify_io_u(td, io_u);
put_io_u(td, io_u);
+ if (!ret)
+ continue;
+ if (td->o.continue_on_error &&
+ td_non_fatal_error(ret)) {
+ update_error_count(td, ret);
+ td_clear_error(td);
+ ret = 0;
+ }
}
} while (!ret);
+ if (ret) {
+ td_verror(td, ret, "async_verify");
+ td->terminate = 1;
+ }
+
done:
pthread_mutex_lock(&td->io_u_lock);
td->nr_verify_threads--;
}
if (i != td->o.verify_async) {
+ log_err("fio: only %d verify threads started, exiting\n", i);
td->verify_thread_exit = 1;
write_barrier();
pthread_cond_broadcast(&td->verify_cond);