[PATCH 3/3] nvme-rdma: Support ctrl_loss_tmo
James Smart
james.smart at broadcom.com
Mon Apr 24 17:46:50 PDT 2017
On 3/18/2017 3:42 PM, Sagi Grimberg wrote:
> Before scheduling a reconnect attempt, check
> nr_reconnects against max_reconnects, if not
> exhausted (or max_reconnects is not -1), schedule
> a reconnect attempts, otherwise schedule ctrl
> removal.
>
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> ---
> drivers/nvme/host/rdma.c | 41 ++++++++++++++++++++++++++++-------------
> 1 file changed, 28 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> index 33f18636ea99..71d1e1a6b928 100644
> --- a/drivers/nvme/host/rdma.c
> +++ b/drivers/nvme/host/rdma.c
> @@ -711,6 +711,26 @@ static void nvme_rdma_free_ctrl(struct nvme_ctrl *nctrl)
> kfree(ctrl);
> }
>
> +static void nvme_rdma_reconnect_or_remove(struct nvme_rdma_ctrl *ctrl)
> +{
> + /* If we are resetting/deleting then do nothing */
> + if (ctrl->ctrl.state != NVME_CTRL_RECONNECTING) {
> + WARN_ON_ONCE(ctrl->ctrl.state == NVME_CTRL_NEW ||
> + ctrl->ctrl.state == NVME_CTRL_LIVE);
> + return;
> + }
> +
> + if (nvmf_should_reconnect(&ctrl->ctrl)) {
> + dev_info(ctrl->ctrl.device, "Reconnecting in %d seconds...\n",
> + ctrl->ctrl.opts->reconnect_delay);
> + queue_delayed_work(nvme_rdma_wq, &ctrl->reconnect_work,
> + ctrl->ctrl.opts->reconnect_delay * HZ);
> + } else {
> + dev_info(ctrl->ctrl.device, "Removing controller...\n");
Shouldn't there be a:
if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_DELETING))
return;
right here ?
> + queue_work(nvme_rdma_wq, &ctrl->delete_work);
> + }
> +}
> +
-- james
More information about the Linux-nvme
mailing list