diff options
author | Sagi Grimberg <sagi@grimberg.me> | 2022-03-21 14:57:27 +0300 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2022-03-29 10:29:04 +0300 |
commit | 8832cf922151e9dfa2821736beb0ae2dd3968b6e (patch) | |
tree | e73b437a77400681d0c2bb1e94a52f2ddfcdb34a /drivers/nvme/target/configfs.c | |
parent | bc360b0b1611566e1bd47384daf49af6a1c51837 (diff) | |
download | linux-8832cf922151e9dfa2821736beb0ae2dd3968b6e.tar.xz |
nvmet: use a private workqueue instead of the system workqueue
Any attempt to flush kernel-global WQs has possibility of deadlock
so we should simply stop using them, instead introduce nvmet_wq
which is the generic nvmet workqueue for work elements that
don't explicitly require a dedicated workqueue (by the mere fact
that they are using the system_wq).
Changes were done using the following replaces:
- s/schedule_work(/queue_work(nvmet_wq, /g
- s/schedule_delayed_work(/queue_delayed_work(nvmet_wq, /g
- s/flush_scheduled_work()/flush_workqueue(nvmet_wq)/g
Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme/target/configfs.c')
-rw-r--r-- | drivers/nvme/target/configfs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/nvme/target/configfs.c b/drivers/nvme/target/configfs.c index b650312dd4ae..c542f8457b1e 100644 --- a/drivers/nvme/target/configfs.c +++ b/drivers/nvme/target/configfs.c @@ -1593,7 +1593,7 @@ static void nvmet_port_release(struct config_item *item) struct nvmet_port *port = to_nvmet_port(item); /* Let inflight controllers teardown complete */ - flush_scheduled_work(); + flush_workqueue(nvmet_wq); list_del(&port->global_entry); kfree(port->ana_state); |