From mboxrd@z Thu Jan 1 00:00:00 1970 From: ming.lei@redhat.com (Ming Lei) Date: Wed, 16 May 2018 12:03:10 +0800 Subject: [PATCH V6 08/11] nvme: pci: move error handling out of nvme_reset_dev() In-Reply-To: <20180516040313.13596-1-ming.lei@redhat.com> References: <20180516040313.13596-1-ming.lei@redhat.com> Message-ID: <20180516040313.13596-9-ming.lei@redhat.com> Once nested EH is introduced, we may not need to handle error in the inner EH, so move error handling out of nvme_reset_dev(). Meantime return the reset result to caller. Cc: James Smart Cc: Jianchao Wang Cc: Christoph Hellwig Cc: Sagi Grimberg Cc: linux-nvme at lists.infradead.org Cc: Laurence Oberman Signed-off-by: Ming Lei --- drivers/nvme/host/pci.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 50bd1818deb5..634fd7f17950 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2391,7 +2391,7 @@ static void nvme_remove_dead_ctrl(struct nvme_dev *dev, int status) nvme_put_ctrl(&dev->ctrl); } -static void nvme_reset_dev(struct nvme_dev *dev) +static int nvme_reset_dev(struct nvme_dev *dev) { bool was_suspend = !!(dev->ctrl.ctrl_config & NVME_CC_SHN_NORMAL); int result = -ENODEV; @@ -2485,6 +2485,7 @@ static void nvme_reset_dev(struct nvme_dev *dev) nvme_unfreeze(&dev->ctrl); } + result = -ENODEV; /* * If only admin queue live, keep it to do further investigation or * recovery. @@ -2496,19 +2497,22 @@ static void nvme_reset_dev(struct nvme_dev *dev) } nvme_start_ctrl(&dev->ctrl); - return; + return 0; out: - nvme_remove_dead_ctrl(dev, result); + return result; } static void nvme_reset_work(struct work_struct *work) { struct nvme_dev *dev = container_of(work, struct nvme_dev, ctrl.reset_work); + int result; mutex_lock(&dev->ctrl.reset_lock); - nvme_reset_dev(dev); + result = nvme_reset_dev(dev); + if (result) + nvme_remove_dead_ctrl(dev, result); mutex_unlock(&dev->ctrl.reset_lock); } -- 2.9.5