mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-21 00:42:16 +00:00
[SCSI] qla2xxx: Remove host_lock in queuecommand function
Also in qla_os.c, rename the function, remove DEF_SCSI_QCMD, etc. Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
038d9446a9
commit
f5e3e40b39
@ -506,7 +506,7 @@ qla24xx_fw_version_str(struct scsi_qla_host *vha, char *str)
|
||||
|
||||
static inline srb_t *
|
||||
qla2x00_get_new_sp(scsi_qla_host_t *vha, fc_port_t *fcport,
|
||||
struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
|
||||
struct scsi_cmnd *cmd)
|
||||
{
|
||||
srb_t *sp;
|
||||
struct qla_hw_data *ha = vha->hw;
|
||||
@ -520,14 +520,13 @@ qla2x00_get_new_sp(scsi_qla_host_t *vha, fc_port_t *fcport,
|
||||
sp->cmd = cmd;
|
||||
sp->flags = 0;
|
||||
CMD_SP(cmd) = (void *)sp;
|
||||
cmd->scsi_done = done;
|
||||
sp->ctx = NULL;
|
||||
|
||||
return sp;
|
||||
}
|
||||
|
||||
static int
|
||||
qla2xxx_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
|
||||
qla2xxx_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
|
||||
{
|
||||
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
||||
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
||||
@ -537,7 +536,6 @@ qla2xxx_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)
|
||||
srb_t *sp;
|
||||
int rval;
|
||||
|
||||
spin_unlock_irq(vha->host->host_lock);
|
||||
if (ha->flags.eeh_busy) {
|
||||
if (ha->flags.pci_channel_io_perm_failure)
|
||||
cmd->result = DID_NO_CONNECT << 16;
|
||||
@ -570,40 +568,32 @@ qla2xxx_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)
|
||||
goto qc24_target_busy;
|
||||
}
|
||||
|
||||
sp = qla2x00_get_new_sp(base_vha, fcport, cmd, done);
|
||||
sp = qla2x00_get_new_sp(base_vha, fcport, cmd);
|
||||
if (!sp)
|
||||
goto qc24_host_busy_lock;
|
||||
goto qc24_host_busy;
|
||||
|
||||
rval = ha->isp_ops->start_scsi(sp);
|
||||
if (rval != QLA_SUCCESS)
|
||||
goto qc24_host_busy_free_sp;
|
||||
|
||||
spin_lock_irq(vha->host->host_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
qc24_host_busy_free_sp:
|
||||
qla2x00_sp_free_dma(sp);
|
||||
mempool_free(sp, ha->srb_mempool);
|
||||
|
||||
qc24_host_busy_lock:
|
||||
spin_lock_irq(vha->host->host_lock);
|
||||
qc24_host_busy:
|
||||
return SCSI_MLQUEUE_HOST_BUSY;
|
||||
|
||||
qc24_target_busy:
|
||||
spin_lock_irq(vha->host->host_lock);
|
||||
return SCSI_MLQUEUE_TARGET_BUSY;
|
||||
|
||||
qc24_fail_command:
|
||||
spin_lock_irq(vha->host->host_lock);
|
||||
done(cmd);
|
||||
cmd->scsi_done(cmd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static DEF_SCSI_QCMD(qla2xxx_queuecommand)
|
||||
|
||||
|
||||
/*
|
||||
* qla2x00_eh_wait_on_command
|
||||
* Waits for the command to be returned by the Firmware for some
|
||||
|
Loading…
Reference in New Issue
Block a user