bcache: Give btree_io_wq correct semantics again
authorKai Krakow <kai@kaishome.de>
Wed, 10 Feb 2021 05:07:26 +0000 (13:07 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 10 Feb 2021 15:06:00 +0000 (08:06 -0700)
Before killing `btree_io_wq`, the queue was allocated using
`create_singlethread_workqueue()` which has `WQ_MEM_RECLAIM`. After
killing it, it no longer had this property but `system_wq` is not
single threaded.

Let's combine both worlds and make it multi threaded but able to
reclaim memory.

Cc: Coly Li <colyli@suse.de>
Cc: stable@vger.kernel.org # 5.4+
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/bcache/btree.c

index 952f022db5a5fe1d1d4840661902eaa887d96573..fe6dce125aba226e5f7c05cad39c78b38829389d 100644 (file)
@@ -2775,7 +2775,7 @@ void bch_btree_exit(void)
 
 int __init bch_btree_init(void)
 {
-       btree_io_wq = create_singlethread_workqueue("bch_btree_io");
+       btree_io_wq = alloc_workqueue("bch_btree_io", WQ_MEM_RECLAIM, 0);
        if (!btree_io_wq)
                return -ENOMEM;