Loading drivers/scsi/mpt3sas/mpt3sas_scsih.c +14 −1 Original line number Diff line number Diff line Loading @@ -4010,7 +4010,10 @@ _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status) SAM_STAT_CHECK_CONDITION; } static inline bool ata_12_16_cmd(struct scsi_cmnd *scmd) { return (scmd->cmnd[0] == ATA_12 || scmd->cmnd[0] == ATA_16); } /** * scsih_qcmd - main scsi request entry point Loading Loading @@ -4038,6 +4041,13 @@ scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd) if (ioc->logging_level & MPT_DEBUG_SCSI) scsi_print_command(scmd); /* * Lock the device for any subsequent command until command is * done. */ if (ata_12_16_cmd(scmd)) scsi_internal_device_block(scmd->device); sas_device_priv_data = scmd->device->hostdata; if (!sas_device_priv_data || !sas_device_priv_data->sas_target) { scmd->result = DID_NO_CONNECT << 16; Loading Loading @@ -4613,6 +4623,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply) if (scmd == NULL) return 1; if (ata_12_16_cmd(scmd)) scsi_internal_device_unblock(scmd->device, SDEV_RUNNING); mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); if (mpi_reply == NULL) { Loading drivers/scsi/qla2xxx/qla_os.c +13 −8 Original line number Diff line number Diff line Loading @@ -1456,6 +1456,10 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) for (cnt = 1; cnt < req->num_outstanding_cmds; cnt++) { sp = req->outstanding_cmds[cnt]; if (sp) { /* Don't abort commands in adapter during EEH * recovery as it's not accessible/responding. */ if (!ha->flags.eeh_busy) { /* Get a reference to the sp and drop the lock. * The reference ensures this sp->done() call * - and not the call in qla2xxx_eh_abort() - Loading @@ -1465,6 +1469,7 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) spin_unlock_irqrestore(&ha->hardware_lock, flags); qla2xxx_eh_abort(GET_CMD_SP(sp)); spin_lock_irqsave(&ha->hardware_lock, flags); } req->outstanding_cmds[cnt] = NULL; sp->done(vha, sp, res); } Loading Loading
drivers/scsi/mpt3sas/mpt3sas_scsih.c +14 −1 Original line number Diff line number Diff line Loading @@ -4010,7 +4010,10 @@ _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status) SAM_STAT_CHECK_CONDITION; } static inline bool ata_12_16_cmd(struct scsi_cmnd *scmd) { return (scmd->cmnd[0] == ATA_12 || scmd->cmnd[0] == ATA_16); } /** * scsih_qcmd - main scsi request entry point Loading Loading @@ -4038,6 +4041,13 @@ scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd) if (ioc->logging_level & MPT_DEBUG_SCSI) scsi_print_command(scmd); /* * Lock the device for any subsequent command until command is * done. */ if (ata_12_16_cmd(scmd)) scsi_internal_device_block(scmd->device); sas_device_priv_data = scmd->device->hostdata; if (!sas_device_priv_data || !sas_device_priv_data->sas_target) { scmd->result = DID_NO_CONNECT << 16; Loading Loading @@ -4613,6 +4623,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply) if (scmd == NULL) return 1; if (ata_12_16_cmd(scmd)) scsi_internal_device_unblock(scmd->device, SDEV_RUNNING); mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); if (mpi_reply == NULL) { Loading
drivers/scsi/qla2xxx/qla_os.c +13 −8 Original line number Diff line number Diff line Loading @@ -1456,6 +1456,10 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) for (cnt = 1; cnt < req->num_outstanding_cmds; cnt++) { sp = req->outstanding_cmds[cnt]; if (sp) { /* Don't abort commands in adapter during EEH * recovery as it's not accessible/responding. */ if (!ha->flags.eeh_busy) { /* Get a reference to the sp and drop the lock. * The reference ensures this sp->done() call * - and not the call in qla2xxx_eh_abort() - Loading @@ -1465,6 +1469,7 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) spin_unlock_irqrestore(&ha->hardware_lock, flags); qla2xxx_eh_abort(GET_CMD_SP(sp)); spin_lock_irqsave(&ha->hardware_lock, flags); } req->outstanding_cmds[cnt] = NULL; sp->done(vha, sp, res); } Loading