• Romit Dasgupta's avatar
    Thaw refrigerated bdi flusher threads before invoking kthread_stop on them · c62b17a5
    Romit Dasgupta authored
    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: default avatarRomit Dasgupta <romit@ti.com>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    c62b17a5
backing-dev.c 17.9 KB