linux/drivers/md/bcache
Guoju Fang 0f843e65d9 bcache: add separate workqueue for journal_write to avoid deadlock
After write SSD completed, bcache schedules journal_write work to
system_wq, which is a public workqueue in system, without WQ_MEM_RECLAIM
flag. system_wq is also a bound wq, and there may be no idle kworker on
current processor. Creating a new kworker may unfortunately need to
reclaim memory first, by shrinking cache and slab used by vfs, which
depends on bcache device. That's a deadlock.

This patch create a new workqueue for journal_write with WQ_MEM_RECLAIM
flag. It's rescuer thread will work to avoid the deadlock.

Signed-off-by: Guoju Fang <fangguoju@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-09-27 09:47:01 -06:00
..
Kconfig for-4.19/post-20180822 2018-08-22 13:38:05 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
alloc.c bcache: style fix to add a blank line after declarations 2018-08-11 15:46:41 -06:00
bcache.h bcache: add separate workqueue for journal_write to avoid deadlock 2018-09-27 09:47:01 -06:00
bset.c bcache: fix code comments style 2018-08-11 15:46:42 -06:00
bset.h bcache: style fixes for lines over 80 characters 2018-08-11 15:46:41 -06:00
btree.c bcache: fix indent by replacing blank by tabs 2018-08-11 15:46:41 -06:00
btree.h bcache: style fixes for lines over 80 characters 2018-08-11 15:46:41 -06:00
closure.c bcache: add missing SPDX header 2018-08-11 15:46:42 -06:00
closure.h bcache: add the missing comments for smp_mb()/smp_wmb() 2018-08-11 15:46:42 -06:00
debug.c bcache: replace printk() by pr_*() routines 2018-08-11 15:46:41 -06:00
debug.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
extents.c bcache: replace printk() by pr_*() routines 2018-08-11 15:46:41 -06:00
extents.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
io.c bcache: fix typo 'succesfully' to 'successfully' 2018-08-11 15:46:42 -06:00
journal.c bcache: add separate workqueue for journal_write to avoid deadlock 2018-09-27 09:47:01 -06:00
journal.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
movinggc.c bcache: style fix to add a blank line after declarations 2018-08-11 15:46:41 -06:00
request.c bcache: do not check NULL pointer before calling kmem_cache_destroy 2018-08-11 15:46:42 -06:00
request.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
stats.c bcache: style fix to add a blank line after declarations 2018-08-11 15:46:41 -06:00
stats.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
super.c bcache: add separate workqueue for journal_write to avoid deadlock 2018-09-27 09:47:01 -06:00
sysfs.c bcache: add static const prefix to char * array declarations 2018-08-11 15:46:42 -06:00
sysfs.h bcache: replace Symbolic permissions by octal permission numbers 2018-08-11 15:46:41 -06:00
trace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
util.c for-4.19/post-20180822 2018-08-22 13:38:05 -07:00
util.h for-4.19/post-20180822 2018-08-22 13:38:05 -07:00
writeback.c bcache: release dc->writeback_lock properly in bch_writeback_thread() 2018-08-22 15:06:29 -06:00
writeback.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00