From: Theodore Ts'o Date: Sun, 23 Oct 2016 14:35:14 +0000 (-0600) Subject: backend: if we can't grab stat_mutex, report a deadlock error and exit X-Git-Tag: fio-2.15~5 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=ca0122d822ea7dd573f05ca4cf43c5d0ff9f4adb backend: if we can't grab stat_mutex, report a deadlock error and exit Signed-off-by: Theodore Ts'o Signed-off-by: Jens Axboe --- diff --git a/backend.c b/backend.c index fb2a8551..093b6a3a 100644 --- a/backend.c +++ b/backend.c @@ -1471,6 +1471,7 @@ static void *thread_main(void *data) struct thread_data *td = fd->td; struct thread_options *o = &td->o; struct sk_out *sk_out = fd->sk_out; + int deadlock_loop_cnt; int clear_state; int ret; @@ -1731,11 +1732,17 @@ static void *thread_main(void *data) * the rusage_sem, which would never get upped because * this thread is waiting for the stat mutex. */ + deadlock_loop_cnt = 0; do { check_update_rusage(td); if (!fio_mutex_down_trylock(stat_mutex)) break; usleep(1000); + if (deadlock_loop_cnt++ > 5000) { + log_err("fio seems to be stuck grabbing stat_mutex, forcibly exiting\n"); + td->error = EDEADLOCK; + goto err; + } } while (1); if (td_read(td) && td->io_bytes[DDIR_READ])