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: Tejun Heo <tj@kernel.org> Link: http://lkml.kernel.org/r/CACT4Y+Zs6vkjHo9qHb4TrEiz3S4+quvvVQ9VWvj2Mx6pETGb9Q@mail.gmail.com Cc: Dmitry Vyukov <dvyukov@google.com>
This commit is contained in:
parent
77e5bdf9f7
commit
fa07fb6a4e
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user