|
Michal Suchanek |
0d8166 |
From 2e51f78b5d8717bba243f5e857031b1d104a3577 Mon Sep 17 00:00:00 2001
|
|
Michal Suchanek |
0d8166 |
From: Brian King <brking@linux.vnet.ibm.com>
|
|
Michal Suchanek |
0d8166 |
Date: Tue, 11 May 2021 13:12:20 -0500
|
|
Michal Suchanek |
0d8166 |
Subject: [PATCH] scsi: ibmvfc: Reinit target retries
|
|
Michal Suchanek |
0d8166 |
|
|
Michal Suchanek |
0d8166 |
References: bsc#1185938 ltc#192043
|
|
Michal Kubecek |
9a3a83 |
Patch-mainline: v5.14-rc1
|
|
Michal Suchanek |
0d8166 |
Git-commit: 2e51f78b5d8717bba243f5e857031b1d104a3577
|
|
Michal Suchanek |
0d8166 |
|
|
Michal Suchanek |
0d8166 |
If rport target discovery commands fail for some reason, they get retried
|
|
Michal Suchanek |
0d8166 |
up to a set number of retries. Once the retry limit is exceeded, the target
|
|
Michal Suchanek |
0d8166 |
is deleted. In order to delete the target, we either need to do an implicit
|
|
Michal Suchanek |
0d8166 |
logout or a move login. In the move login case, if the move login fails, we
|
|
Michal Suchanek |
0d8166 |
want to retry it. This ensures the retry counter gets reinitialized so the
|
|
Michal Suchanek |
0d8166 |
move login will get retried.
|
|
Michal Suchanek |
0d8166 |
|
|
Michal Suchanek |
0d8166 |
Link: https://lore.kernel.org/r/1620756740-7045-4-git-send-email-brking@linux.vnet.ibm.com
|
|
Michal Suchanek |
0d8166 |
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
|
|
Michal Suchanek |
0d8166 |
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
|
Michal Suchanek |
0d8166 |
Acked-by: Michal Suchanek <msuchanek@suse.de>
|
|
Michal Suchanek |
0d8166 |
---
|
|
Michal Suchanek |
0d8166 |
drivers/scsi/ibmvscsi/ibmvfc.c | 7 ++++++-
|
|
Michal Suchanek |
0d8166 |
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
Michal Suchanek |
0d8166 |
|
|
Michal Suchanek |
0d8166 |
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
|
|
Michal Suchanek |
0d8166 |
index c8d3fdf65a7f..a251dbf630cc 100644
|
|
Michal Suchanek |
0d8166 |
--- a/drivers/scsi/ibmvscsi/ibmvfc.c
|
|
Michal Suchanek |
0d8166 |
+++ b/drivers/scsi/ibmvscsi/ibmvfc.c
|
|
Michal Suchanek |
0d8166 |
@@ -654,8 +654,10 @@ static void ibmvfc_reinit_host(struct ibmvfc_host *vhost)
|
|
Michal Suchanek |
0d8166 |
**/
|
|
Michal Suchanek |
0d8166 |
static void ibmvfc_del_tgt(struct ibmvfc_target *tgt)
|
|
Michal Suchanek |
0d8166 |
{
|
|
Michal Suchanek |
0d8166 |
- if (!ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_LOGOUT_RPORT))
|
|
Michal Suchanek |
0d8166 |
+ if (!ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_LOGOUT_RPORT)) {
|
|
Michal Suchanek |
0d8166 |
tgt->job_step = ibmvfc_tgt_implicit_logout_and_del;
|
|
Michal Suchanek |
0d8166 |
+ tgt->init_retries = 0;
|
|
Michal Suchanek |
0d8166 |
+ }
|
|
Michal Suchanek |
0d8166 |
wake_up(&tgt->vhost->work_wait_q);
|
|
Michal Suchanek |
0d8166 |
}
|
|
Michal Suchanek |
0d8166 |
|
|
Michal Suchanek |
0d8166 |
@@ -4744,6 +4746,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost,
|
|
Michal Suchanek |
0d8166 |
*/
|
|
Michal Suchanek |
0d8166 |
wtgt->new_scsi_id = scsi_id;
|
|
Michal Suchanek |
0d8166 |
wtgt->action = IBMVFC_TGT_ACTION_INIT;
|
|
Michal Suchanek |
0d8166 |
+ wtgt->init_retries = 0;
|
|
Michal Suchanek |
0d8166 |
ibmvfc_init_tgt(wtgt, ibmvfc_tgt_move_login);
|
|
Michal Suchanek |
0d8166 |
}
|
|
Michal Suchanek |
0d8166 |
goto unlock_out;
|
|
Michal Suchanek |
0d8166 |
@@ -5336,6 +5339,7 @@ static void ibmvfc_tgt_add_rport(struct ibmvfc_target *tgt)
|
|
Michal Suchanek |
0d8166 |
tgt_dbg(tgt, "Deleting rport with outstanding I/O\n");
|
|
Michal Suchanek |
0d8166 |
ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_LOGOUT_DELETED_RPORT);
|
|
Michal Suchanek |
0d8166 |
tgt->rport = NULL;
|
|
Michal Suchanek |
0d8166 |
+ tgt->init_retries = 0;
|
|
Michal Suchanek |
0d8166 |
spin_unlock_irqrestore(vhost->host->host_lock, flags);
|
|
Michal Suchanek |
0d8166 |
fc_remote_port_delete(rport);
|
|
Michal Suchanek |
0d8166 |
return;
|
|
Michal Suchanek |
0d8166 |
@@ -5490,6 +5494,7 @@ static void ibmvfc_do_work(struct ibmvfc_host *vhost)
|
|
Michal Suchanek |
0d8166 |
tgt_dbg(tgt, "Deleting rport with I/O outstanding\n");
|
|
Michal Suchanek |
0d8166 |
rport = tgt->rport;
|
|
Michal Suchanek |
0d8166 |
tgt->rport = NULL;
|
|
Michal Suchanek |
0d8166 |
+ tgt->init_retries = 0;
|
|
Michal Suchanek |
0d8166 |
ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_LOGOUT_DELETED_RPORT);
|
|
Michal Suchanek |
0d8166 |
|
|
Michal Suchanek |
0d8166 |
/*
|
|
Michal Suchanek |
0d8166 |
--
|
|
Michal Suchanek |
0d8166 |
2.26.2
|
|
Michal Suchanek |
0d8166 |
|