On Sun, Nov 27, 2011 at 01:06:30AM +0000, Nicholas A. Bellinger wrote: > From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> > > This patch makes qla_tgt_handle_cmd_for_atio() use single queue_work > for both session active cases. > + if (IS_FWI2_CAPABLE(ha)) > + sess = ha->tgt_ops->find_sess_by_s_id(vha, > + atio->u.isp24.fcp_hdr.s_id); > + else > + sess = ha->tgt_ops->find_sess_by_loop_id(vha, > + GET_TARGET_ID(ha, atio)); > + > + if (unlikely(!sess)) { > + goto out_sched; > } > > if (sess->tearing_down || tgt->tgt_stop) > @@ -3184,6 +3190,7 @@ static int qla_tgt_handle_cmd_for_atio(struct scsi_qla_host *vha, > */ > kref_get(&sess->sess_kref); > > +out_sched: > INIT_WORK(&cmd->work, qla_tgt_do_work); So this still tries to grab a reference to the session from irq context first and only delays it if the easy way to grab it fails. I'd be much happier if session lookup would always happen in user context, but for now it's a step forward, so I'm okay with it. -- 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