nvmet: make nvmet_wq unbound
authorSagi Grimberg <sagi.grimberg@vastdata.com>
Tue, 7 May 2024 06:54:10 +0000 (09:54 +0300)
committerKeith Busch <kbusch@kernel.org>
Tue, 7 May 2024 15:07:05 +0000 (08:07 -0700)
When deleting many controllers one-by-one, it takes a very
long time as these work elements may serialize as they are
scheduled on the executing cpu instead of spreading. In general
nvmet_wq can definitely be used for long standing work elements
so its better to make it unbound regardless.

Signed-off-by: Sagi Grimberg <sagi.grimberg@vastdata.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/core.c

index e06013c5dace94d8b91960451b868fe6eaac2137..2fde22323622e44366e6a194eb9af028799014e3 100644 (file)
@@ -1686,7 +1686,8 @@ static int __init nvmet_init(void)
        if (!buffered_io_wq)
                goto out_free_zbd_work_queue;
 
-       nvmet_wq = alloc_workqueue("nvmet-wq", WQ_MEM_RECLAIM, 0);
+       nvmet_wq = alloc_workqueue("nvmet-wq",
+                       WQ_MEM_RECLAIM | WQ_UNBOUND, 0);
        if (!nvmet_wq)
                goto out_free_buffered_work_queue;