Commit c669ccdc authored by Sagi Grimberg's avatar Sagi Grimberg Committed by Christoph Hellwig

nvme: queue ns scanning and async request from nvme_wq

To suppress the warning triggered by nvme_uninit_ctrl:
kernel: [   50.350439] nvme nvme0: rescanning
kernel: [   50.363351] ------------[ cut here]------------
kernel: [   50.363396] WARNING: CPU: 1 PID: 37 at kernel/workqueue.c:2423 check_flush_dependency+0x11f/0x130
kernel: [   50.363409] workqueue: WQ_MEM_RECLAIM
nvme-wq:nvme_del_ctrl_work [nvme_core] is flushing !WQ_MEM_RECLAIM events:nvme_scan_work [nvme_core]

This was triggered with nvme-loop, but can happen with rdma/pci as well afaict.
Signed-off-by: default avatarSagi Grimberg <sagi@grimberg.me>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 9a6327d2
...@@ -2228,7 +2228,7 @@ void nvme_queue_scan(struct nvme_ctrl *ctrl) ...@@ -2228,7 +2228,7 @@ void nvme_queue_scan(struct nvme_ctrl *ctrl)
* removal. * removal.
*/ */
if (ctrl->state == NVME_CTRL_LIVE) if (ctrl->state == NVME_CTRL_LIVE)
schedule_work(&ctrl->scan_work); queue_work(nvme_wq, &ctrl->scan_work);
} }
EXPORT_SYMBOL_GPL(nvme_queue_scan); EXPORT_SYMBOL_GPL(nvme_queue_scan);
...@@ -2283,7 +2283,7 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status, ...@@ -2283,7 +2283,7 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status,
/*FALLTHRU*/ /*FALLTHRU*/
case NVME_SC_ABORT_REQ: case NVME_SC_ABORT_REQ:
++ctrl->event_limit; ++ctrl->event_limit;
schedule_work(&ctrl->async_event_work); queue_work(nvme_wq, &ctrl->async_event_work);
break; break;
default: default:
break; break;
...@@ -2306,7 +2306,7 @@ EXPORT_SYMBOL_GPL(nvme_complete_async_event); ...@@ -2306,7 +2306,7 @@ EXPORT_SYMBOL_GPL(nvme_complete_async_event);
void nvme_queue_async_events(struct nvme_ctrl *ctrl) void nvme_queue_async_events(struct nvme_ctrl *ctrl)
{ {
ctrl->event_limit = NVME_NR_AERS; ctrl->event_limit = NVME_NR_AERS;
schedule_work(&ctrl->async_event_work); queue_work(nvme_wq, &ctrl->async_event_work);
} }
EXPORT_SYMBOL_GPL(nvme_queue_async_events); EXPORT_SYMBOL_GPL(nvme_queue_async_events);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment