diff options
author | Keith Busch <keith.busch@intel.com> | 2017-02-11 02:15:49 +0300 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-02-22 23:34:00 +0300 |
commit | 6db28eda266052f86a6b402422de61eeb7d2e351 (patch) | |
tree | 170deac146c635873dcbee3e77ccd810830002f8 /drivers/nvme | |
parent | c5552fde102fcc3f2cf9e502b8ac90e3500d8fdf (diff) | |
download | linux-6db28eda266052f86a6b402422de61eeb7d2e351.tar.xz |
nvme/pci: Disable on removal when disconnected
If the device is not present, the driver should disable the queues
immediately. Prior to this, the driver was relying on the watchdog timer
to kill the queues if requests were outstanding to the device, and that
just delays removal up to one second.
Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/nvme')
-rw-r--r-- | drivers/nvme/host/pci.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index ddc51adb594d..362a1468f99d 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2001,8 +2001,10 @@ static void nvme_remove(struct pci_dev *pdev) pci_set_drvdata(pdev, NULL); - if (!pci_device_is_present(pdev)) + if (!pci_device_is_present(pdev)) { nvme_change_ctrl_state(&dev->ctrl, NVME_CTRL_DEAD); + nvme_dev_disable(dev, false); + } flush_work(&dev->reset_work); nvme_uninit_ctrl(&dev->ctrl); |