Commit d20ed91b authored by Alexei Potashnik's avatar Alexei Potashnik Committed by Nicholas Bellinger
Browse files

qla2xxx: disable scsi_transport_fc registration in target mode



There are multiple reasons for disabling this:

1. It provides no functional benefit. We pretty much only get a few more
sysfs entries for each port, but all that information is already
available from /sys/kernel/debug/target/qla-session-X

2. It already only works in private-loop mode. By disabling we'll be
getting more uniform behavior with fabric mode.

3. It creates complications for the new PLOGI handling mechanism:
scsi_transport_fc port deletion timer could race with new session
from initiator and cause logout after successful login.

Cc: <stable@vger.kernel.org> # v3.18+
Signed-off-by: default avatarAlexei Potashnik <alexei@purestorage.com>
Signed-off-by: default avatarHimanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent df673274
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -3340,8 +3340,7 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)

	if (IS_QLAFX00(vha->hw)) {
		qla2x00_set_fcport_state(fcport, FCS_ONLINE);
		qla2x00_reg_remote_port(vha, fcport);
		return;
		goto reg_port;
	}
	fcport->login_retry = 0;
	fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT);
@@ -3349,7 +3348,16 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
	qla2x00_set_fcport_state(fcport, FCS_ONLINE);
	qla2x00_iidma_fcport(vha, fcport);
	qla24xx_update_fcport_fcp_prio(vha, fcport);

reg_port:
	if (qla_ini_mode_enabled(vha))
		qla2x00_reg_remote_port(vha, fcport);
	else {
		/*
		 * Create target mode FC NEXUS in qla_target.c
		 */
		qlt_fc_port_added(vha, fcport);
	}
}

/*
+2 −1
Original line number Diff line number Diff line
@@ -3235,6 +3235,7 @@ qla2x00_schedule_rport_del(struct scsi_qla_host *vha, fc_port_t *fcport,
		qla2xxx_wake_dpc(base_vha);
	} else {
		int now;
		if (rport)
			fc_remote_port_delete(rport);
		qlt_do_generation_tick(vha, &now);
		qlt_fc_port_deleted(vha, fcport, now);