diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-11-30 13:57:03 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-11-30 13:57:03 -0800 |
commit | b54eb1795c0cfeb6cc48fdcbd010e800541750ad (patch) | |
tree | 85ac272cfee48497ecaaf121b74db5a6bd021cf3 /mm | |
parent | 0bb324626575e89385ca384d8cdd98fbeaeb0545 (diff) | |
parent | 69ac74822277fa999a3f469d8362e93262deb3f4 (diff) |
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block:
cciss: make device attrs static
Thaw refrigerated bdi flusher threads before invoking kthread_stop on them
Diffstat (limited to 'mm')
-rw-r--r-- | mm/backing-dev.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 11aee09dd2a6..67a33a5a1a93 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -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); + } } /* |