summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
authorQuinn Tran2017-12-28 21:33:41 +0100
committerMartin K. Petersen2018-01-04 05:41:07 +0100
commit6d67492764b39ad6efb6822816ad73dc141752f4 (patch)
treeda159aadd93c53addb005269ba8a54e321ae08c7 /drivers/scsi/qla2xxx/qla_os.c
parentscsi: qla2xxx: Prevent multiple active discovery commands per session (diff)
downloadkernel-qcow2-linux-6d67492764b39ad6efb6822816ad73dc141752f4.tar.gz
kernel-qcow2-linux-6d67492764b39ad6efb6822816ad73dc141752f4.tar.xz
kernel-qcow2-linux-6d67492764b39ad6efb6822816ad73dc141752f4.zip
scsi: qla2xxx: Prevent relogin trigger from sending too many commands
This patch adds check for pending work event before queueing relogin work to prevent redundant work to be active at the same time. Signed-off-by: Quinn Tran <quinn.tran@cavium.com> Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 605100e3c6c6..a64f67a562f0 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -4697,6 +4697,7 @@ int qla2x00_post_async_##name##_work( \
e->u.logio.data[0] = data[0]; \
e->u.logio.data[1] = data[1]; \
} \
+ fcport->flags |= FCF_ASYNC_ACTIVE; \
return qla2x00_post_work(vha, e); \
}
@@ -5076,7 +5077,8 @@ void qla2x00_relogin(struct scsi_qla_host *vha)
* to it if we haven't run out of retries.
*/
if (atomic_read(&fcport->state) != FCS_ONLINE &&
- fcport->login_retry && !(fcport->flags & FCF_ASYNC_SENT)) {
+ fcport->login_retry &&
+ !(fcport->flags & (FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE))) {
if (vha->hw->current_topology != ISP_CFG_NL) {
ql_dbg(ql_dbg_disc, fcport->vha, 0x2108,
"%s %8phC DS %d LS %d\n", __func__,