RE: [PATCH 3/3] qla2xxx: Run queuecommand outside the host_lock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mathew,

We submitted the host_lock related changes earlier, and the changes were accepted and went into the 2.6.38-rc6 (or round-about that timeframe) upstream kernel.

Here's the patch in that sequence we submitted earlier (which is now in the upstream/scsi stream):
http://marc.info/?l=linux-scsi&m=129850384318495&w=2

Cheers,
Madhu

> -----Original Message-----
> From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Matthew Wilcox
> Sent: Friday, April 01, 2011 1:22 PM
> To: linux-scsi@xxxxxxxxxxxxxxx
> Subject: [PATCH 3/3] qla2xxx: Run queuecommand outside the host_lock
>
>
> The qla2xxx driver still uses the host_lock, but only to protect against
> some rare events like rport deletion.
>
> Signed-off-by: Matthew Wilcox <matthew.r.wilcox@xxxxxxxxx>
>
> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
> index f27724d..61340e1 100644
> --- a/drivers/scsi/qla2xxx/qla_os.c
> +++ b/drivers/scsi/qla2xxx/qla_os.c
> @@ -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,16 +520,15 @@ 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 *shost, struct scsi_cmnd *cmd)
>  {
> -     scsi_qla_host_t *vha = shost_priv(cmd->device->host);
> +     scsi_qla_host_t *vha = shost_priv(shost);
>       fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
>       struct fc_rport *rport = starget_to_rport(scsi_target(cmd->device));
>       struct qla_hw_data *ha = vha->hw;
> @@ -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;
> @@ -569,7 +567,7 @@ 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;
>
> @@ -577,8 +575,6 @@ qla2xxx_queuecommand_lck(struct scsi_cmnd *cmd, void
> (*done)(struct scsi_cmnd *)
>       if (rval != QLA_SUCCESS)
>               goto qc24_host_busy_free_sp;
>
> -     spin_lock_irq(vha->host->host_lock);
> -
>       return 0;
>
>  qc24_host_busy_free_sp:
> @@ -586,23 +582,17 @@ qc24_host_busy_free_sp:
>       mempool_free(sp, ha->srb_mempool);
>
>  qc24_host_busy_lock:
> -     spin_lock_irq(vha->host->host_lock);
>       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
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux