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>
Showing
- drivers/nvme/target/admin-cmd.c 1 addition, 1 deletiondrivers/nvme/target/admin-cmd.c
- drivers/nvme/target/configfs.c 1 addition, 1 deletiondrivers/nvme/target/configfs.c
- drivers/nvme/target/core.c 18 additions, 6 deletionsdrivers/nvme/target/core.c
- drivers/nvme/target/fc.c 4 additions, 4 deletionsdrivers/nvme/target/fc.c
- drivers/nvme/target/fcloop.c 8 additions, 8 deletionsdrivers/nvme/target/fcloop.c
- drivers/nvme/target/io-cmd-file.c 3 additions, 3 deletionsdrivers/nvme/target/io-cmd-file.c
- drivers/nvme/target/loop.c 2 additions, 2 deletionsdrivers/nvme/target/loop.c
- drivers/nvme/target/nvmet.h 1 addition, 0 deletionsdrivers/nvme/target/nvmet.h
- drivers/nvme/target/passthru.c 1 addition, 1 deletiondrivers/nvme/target/passthru.c
- drivers/nvme/target/rdma.c 6 additions, 6 deletionsdrivers/nvme/target/rdma.c
- drivers/nvme/target/tcp.c 5 additions, 5 deletionsdrivers/nvme/target/tcp.c
Please register or sign in to comment