From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> We don't need to wait on the condition variable if directory tree scanning has already finished by the time we've finished queueing all the directory work items. This is easy to trigger when the workqueue is single-threaded, but in theory it could happen any time. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- scrub/vfs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scrub/vfs.c b/scrub/vfs.c index b358ab4a..0e971d27 100644 --- a/scrub/vfs.c +++ b/scrub/vfs.c @@ -235,7 +235,8 @@ scan_fs_tree( goto out_wq; pthread_mutex_lock(&sft.lock); - pthread_cond_wait(&sft.wakeup, &sft.lock); + if (sft.nr_dirs) + pthread_cond_wait(&sft.wakeup, &sft.lock); assert(sft.nr_dirs == 0); pthread_mutex_unlock(&sft.lock);