nvme-rdma: Queue ns scanning after a sucessful reconnection
authorSagi Grimberg <sagi@grimberg.me>
Sun, 31 Jul 2016 15:43:15 +0000 (18:43 +0300)
committerSagi Grimberg <sagi@grimberg.me>
Wed, 3 Aug 2016 13:25:03 +0000 (16:25 +0300)
On an ordered target shutdown, the target can send a AEN on a namespace
removal, this will trigger the host to queue ns-list query. The shutdown
will trigger error recovery which will attepmt periodic reconnect.

We can hit a race where the ns rescanning fails (error recovery kicked
in and we're not connected) causing removing all the namespaces and when
we reconnect we won't see any namespaces for this controller.

So, queue a namespace rescan after we successfully reconnected to the target.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/rdma.c

index b96b883698713fdd81442ccaf605ee4b9106792e..7fd1d735ced5d309607045834a318d99580f18d0 100644 (file)
@@ -748,8 +748,10 @@ static void nvme_rdma_reconnect_ctrl_work(struct work_struct *work)
        changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_LIVE);
        WARN_ON_ONCE(!changed);
 
-       if (ctrl->queue_count > 1)
+       if (ctrl->queue_count > 1) {
                nvme_start_queues(&ctrl->ctrl);
+               nvme_queue_scan(&ctrl->ctrl);
+       }
 
        dev_info(ctrl->ctrl.device, "Successfully reconnected\n");