|
@@ -401,6 +401,13 @@ static int bdi_forker_thread(void *ptr)
|
|
}
|
|
}
|
|
|
|
|
|
spin_lock_bh(&bdi_lock);
|
|
spin_lock_bh(&bdi_lock);
|
|
|
|
+ /*
|
|
|
|
+ * In the following loop we are going to check whether we have
|
|
|
|
+ * some work to do without any synchronization with tasks
|
|
|
|
+ * waking us up to do work for them. So we have to set task
|
|
|
|
+ * state already here so that we don't miss wakeups coming
|
|
|
|
+ * after we verify some condition.
|
|
|
|
+ */
|
|
set_current_state(TASK_INTERRUPTIBLE);
|
|
set_current_state(TASK_INTERRUPTIBLE);
|
|
|
|
|
|
list_for_each_entry(bdi, &bdi_list, bdi_list) {
|
|
list_for_each_entry(bdi, &bdi_list, bdi_list) {
|