nvme-fc: stop queues on error detection
authorJames Smart <jsmart2021@gmail.com>
Tue, 25 Apr 2017 22:32:01 +0000 (15:32 -0700)
committerJens Axboe <axboe@fb.com>
Sat, 20 May 2017 16:11:34 +0000 (10:11 -0600)
Per the recommendation by Sagi on:
http://lists.infradead.org/pipermail/linux-nvme/2017-April/009261.html

Rather than waiting for reset work thread to stop queues and abort the ios,
immediately stop the queues on error detection. Reset thread will restop
the queues (as it's called on other paths), but it does not appear to have
a side effect.

Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/fc.c

index 912d457150d58801cd1ed53ba0f35b62315dad2e..dca7165fabcf9ce5df19fee1007e8da8bd794e21 100644 (file)
@@ -1754,6 +1754,10 @@ nvme_fc_error_recovery(struct nvme_fc_ctrl *ctrl, char *errmsg)
        dev_info(ctrl->ctrl.device,
                "NVME-FC{%d}: resetting controller\n", ctrl->cnum);
 
+       /* stop the queues on error, cleanup is in reset thread */
+       if (ctrl->queue_count > 1)
+               nvme_stop_queues(&ctrl->ctrl);
+
        if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_RECONNECTING)) {
                dev_err(ctrl->ctrl.device,
                        "NVME-FC{%d}: error_recovery: Couldn't change state "