Thaw refrigerated bdi flusher threads before invoking kthread_stop on them
authorRomit Dasgupta <romit@ti.com>
Thu, 12 Nov 2009 12:08:11 +0000 (13:08 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Thu, 12 Nov 2009 12:08:11 +0000 (13:08 +0100)
commitc62b17a58ab5e97534ff6487241addd5fcc606de
tree577c41e145d934d5fc39b6bd0b623ff508a6159d
parentaa021baa3295fa6e3f367d80f8955dd5176656eb
Thaw refrigerated bdi flusher threads before invoking kthread_stop on them

Unfreezes the bdi flusher task when the said task needs to exit.

Steps to reproduce this.
1) Mount a file system from MMC/SD card.
2) Unmount the file system. This creates a flusher task.
3) Attempt suspend to RAM. System is unresponsive.

This is because the bdi flusher thread is already in the refrigerator and will
remain so until it is thawed. The MMC driver suspend routine call stack will
ultimately issue a 'kthread_stop' on the bdi flusher thread and will block
until the flusher thread is exited. Since the bdi flusher thread is in the
refrigerator it never cleans up until thawed.

Signed-off-by: Romit Dasgupta <romit@ti.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
mm/backing-dev.c