|
@@ -2047,6 +2047,15 @@ repeat:
|
|
|
move_linked_works(work, scheduled, &n);
|
|
|
|
|
|
process_scheduled_works(rescuer);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Leave this gcwq. If keep_working() is %true, notify a
|
|
|
+ * regular worker; otherwise, we end up with 0 concurrency
|
|
|
+ * and stalling the execution.
|
|
|
+ */
|
|
|
+ if (keep_working(gcwq))
|
|
|
+ wake_up_worker(gcwq);
|
|
|
+
|
|
|
spin_unlock_irq(&gcwq->lock);
|
|
|
}
|
|
|
|