From: Jens Axboe Date: Wed, 19 Mar 2008 09:29:07 +0000 (+0100) Subject: Only decrement pending in reap_threads() if the reaped job was pending X-Git-Tag: fio-1.20-rc4~9^2~4^2 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=6f88bcb0e9a232cf950791edc448edc06bff855f;hp=-c Only decrement pending in reap_threads() if the reaped job was pending Signed-off-by: Jens Axboe --- 6f88bcb0e9a232cf950791edc448edc06bff855f diff --git a/fio.c b/fio.c index 1997bb7c..231a581f 100644 --- a/fio.c +++ b/fio.c @@ -74,10 +74,12 @@ static void terminate_threads(int group_id) struct thread_data *td; int i; + dprint(FD_PROCESS, "terminate group_id=%d\n", group_id); + for_each_td(td, i) { if (group_id == TERMINATE_ALL || groupid == td->groupid) { - dprint(FD_PROCESS, "setting terminate on %d\n", - td->pid); + dprint(FD_PROCESS, "setting terminate on %s/%d\n", + td->o.name, td->pid); td->terminate = 1; td->o.start_delay = 0; @@ -1111,7 +1113,8 @@ reaped: (*nr_running)--; (*m_rate) -= td->o.ratemin; (*t_rate) -= td->o.rate; - pending--; + if (!td->pid) + pending--; if (td->error) exit_value++; @@ -1222,8 +1225,11 @@ static void run_threads(void) continue; } - if (td->o.stonewall && (nr_started || nr_running)) + if (td->o.stonewall && (nr_started || nr_running)) { + dprint(FD_PROCESS, "%s: stonewall wait\n", + td->o.name); break; + } /* * Set state to created. Thread will transition