nvme: Move transports to use nvme-core workqueue

Instead of each transport using it's own workqueue, export
a single nvme-core workqueue and use that instead.

In the future, this will help us moving towards some unification
if controller setup/teardown flows.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Sagi Grimberg
2017-06-07 20:31:55 +02:00
committed by Christoph Hellwig
parent c58bd1bf4d
commit 9a6327d2f2
6 changed files with 36 additions and 60 deletions

View File

@@ -71,8 +71,6 @@ module_param(max_host_mem_size_mb, uint, 0444);
MODULE_PARM_DESC(max_host_mem_size_mb,
"Maximum Host Memory Buffer (HMB) size per controller (in MiB)");
static struct workqueue_struct *nvme_workq;
struct nvme_dev;
struct nvme_queue;
@@ -2190,7 +2188,7 @@ static int nvme_reset(struct nvme_dev *dev)
return -ENODEV;
if (!nvme_change_ctrl_state(&dev->ctrl, NVME_CTRL_RESETTING))
return -EBUSY;
if (!queue_work(nvme_workq, &dev->reset_work))
if (!queue_work(nvme_wq, &dev->reset_work))
return -EBUSY;
return 0;
}
@@ -2318,7 +2316,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
nvme_change_ctrl_state(&dev->ctrl, NVME_CTRL_RESETTING);
dev_info(dev->ctrl.device, "pci function %s\n", dev_name(&pdev->dev));
queue_work(nvme_workq, &dev->reset_work);
queue_work(nvme_wq, &dev->reset_work);
return 0;
release_pools:
@@ -2506,22 +2504,12 @@ static struct pci_driver nvme_driver = {
static int __init nvme_init(void)
{
int result;
nvme_workq = alloc_workqueue("nvme", WQ_UNBOUND | WQ_MEM_RECLAIM, 0);
if (!nvme_workq)
return -ENOMEM;
result = pci_register_driver(&nvme_driver);
if (result)
destroy_workqueue(nvme_workq);
return result;
return pci_register_driver(&nvme_driver);
}
static void __exit nvme_exit(void)
{
pci_unregister_driver(&nvme_driver);
destroy_workqueue(nvme_workq);
_nvme_check_size();
}