X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=rate-submit.c;h=e5c6204351db00304db32fa376837faa9c420cc9;hp=8ecd285c7d91eba927e762e9ab6e5f422c01836f;hb=refs%2Fheads%2Flatency-probe;hpb=c06379a65d467bdcc782d7e1aa067e6391cd5a68 diff --git a/rate-submit.c b/rate-submit.c index 8ecd285c..e5c62043 100644 --- a/rate-submit.c +++ b/rate-submit.c @@ -21,6 +21,14 @@ static void check_overlap(struct io_u *io_u) * time to prevent two threads from thinking the coast * is clear and then submitting IOs that overlap with * each other + * + * If an overlap is found, release the lock and + * re-acquire it before checking again to give other + * threads a chance to make progress + * + * If an overlap is not found, release the lock when the + * io_u's IO_U_F_FLIGHT flag is set so that this io_u + * can be checked by other threads as they assess overlap */ pthread_mutex_lock(&overlap_check); for_each_td(td, i) { @@ -83,10 +91,6 @@ static int io_workqueue_fn(struct submit_worker *sw, ret = io_u_queued_complete(td, min_evts); if (ret > 0) td->cur_depth -= ret; - } else if (ret == FIO_Q_BUSY) { - ret = io_u_queued_complete(td, td->cur_depth); - if (ret > 0) - td->cur_depth -= ret; } return 0;