|
@@ -604,10 +604,14 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi)
|
|
|
|
|
|
/*
|
|
|
* Finally, kill the kernel threads. We don't need to be RCU
|
|
|
- * safe anymore, since the bdi is gone from visibility.
|
|
|
+ * safe anymore, since the bdi is gone from visibility. Force
|
|
|
+ * unfreeze of the thread before calling kthread_stop(), otherwise
|
|
|
+ * it would never exet if it is currently stuck in the refrigerator.
|
|
|
*/
|
|
|
- list_for_each_entry(wb, &bdi->wb_list, list)
|
|
|
+ list_for_each_entry(wb, &bdi->wb_list, list) {
|
|
|
+ wb->task->flags &= ~PF_FROZEN;
|
|
|
kthread_stop(wb->task);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|