From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> Hi folks, This series converts the ATIO interrupt path to use qla_tgt_sess->sess_kref reference in order to push the remaining qla_tgt_cmd->se_cmd init items into qla_tgt_do_work() workqueue process context. It also makes qla_tgt_do_work() fast path run without having to take struct qla_hw_data->hardware_lock unless calling the last qla_tgt_sess_put() to delete qla_tgt_sess during active I/O shutdown. It updates qla_tgt_do_work() to handle the case where qla_tgt_cmd may be dispatched w/o an active qla_tgt_sess reference, and makes the active I/O shutdown logic always run from tgt->sess_del_work context instead of calling the last qla_tgt_sess_put() directly from qla_tgt_stop_phase1() code. Please have a look, --nab Nicholas Bellinger (3): qla2xxx: Add qla_tgt_sess->sess_kref for session get/put qla2xxx: Push remaining se_cmd init into qla_tgt_do_work qla2xxx: Make qla_tgt_stop_phase1 shutdown use tgt->sess_del_work drivers/scsi/qla2xxx/qla_target.c | 417 +++++++++------------ drivers/scsi/qla2xxx/qla_target.h | 9 +- drivers/target/tcm_qla2xxx/tcm_qla2xxx_configfs.c | 1 - drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.c | 27 +- drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.h | 5 +- 5 files changed, 185 insertions(+), 274 deletions(-) -- 1.7.2.5 -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html