Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa07fb6a authored by Tejun Heo's avatar Tejun Heo
Browse files

workqueue: dump workqueue state on sanity check failures in destroy_workqueue()



destroy_workqueue() performs a number of sanity checks to ensure that
the workqueue is empty before proceeding with destruction.  However,
it's not always easy to tell what's going on just from the warning
message.  Let's dump workqueue state after sanity check failures to
help debugging.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/r/CACT4Y+Zs6vkjHo9qHb4TrEiz3S4+quvvVQ9VWvj2Mx6pETGb9Q@mail.gmail.com
Cc: Dmitry Vyukov <dvyukov@google.com>
parent 77e5bdf9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4021,6 +4021,7 @@ void destroy_workqueue(struct workqueue_struct *wq)
		for (i = 0; i < WORK_NR_COLORS; i++) {
			if (WARN_ON(pwq->nr_in_flight[i])) {
				mutex_unlock(&wq->mutex);
				show_workqueue_state();
				return;
			}
		}
@@ -4029,6 +4030,7 @@ void destroy_workqueue(struct workqueue_struct *wq)
		    WARN_ON(pwq->nr_active) ||
		    WARN_ON(!list_empty(&pwq->delayed_works))) {
			mutex_unlock(&wq->mutex);
			show_workqueue_state();
			return;
		}
	}