Loading drivers/infiniband/ulp/srp/ib_srp.c +0 −1 Original line number Original line Diff line number Diff line Loading @@ -2740,7 +2740,6 @@ static struct scsi_host_template srp_template = { .info = srp_target_info, .info = srp_target_info, .queuecommand = srp_queuecommand, .queuecommand = srp_queuecommand, .change_queue_depth = srp_change_queue_depth, .change_queue_depth = srp_change_queue_depth, .change_queue_type = scsi_change_queue_type, .eh_abort_handler = srp_abort, .eh_abort_handler = srp_abort, .eh_device_reset_handler = srp_reset_device, .eh_device_reset_handler = srp_reset_device, .eh_host_reset_handler = srp_reset_host, .eh_host_reset_handler = srp_reset_host, Loading drivers/infiniband/ulp/srpt/ib_srpt.c +5 −5 Original line number Original line Diff line number Diff line Loading @@ -1708,17 +1708,17 @@ static int srpt_handle_cmd(struct srpt_rdma_ch *ch, switch (srp_cmd->task_attr) { switch (srp_cmd->task_attr) { case SRP_CMD_SIMPLE_Q: case SRP_CMD_SIMPLE_Q: cmd->sam_task_attr = MSG_SIMPLE_TAG; cmd->sam_task_attr = TCM_SIMPLE_TAG; break; break; case SRP_CMD_ORDERED_Q: case SRP_CMD_ORDERED_Q: default: default: cmd->sam_task_attr = MSG_ORDERED_TAG; cmd->sam_task_attr = TCM_ORDERED_TAG; break; break; case SRP_CMD_HEAD_OF_Q: case SRP_CMD_HEAD_OF_Q: cmd->sam_task_attr = MSG_HEAD_TAG; cmd->sam_task_attr = TCM_HEAD_TAG; break; break; case SRP_CMD_ACA: case SRP_CMD_ACA: cmd->sam_task_attr = MSG_ACA_TAG; cmd->sam_task_attr = TCM_ACA_TAG; break; break; } } Loading @@ -1733,7 +1733,7 @@ static int srpt_handle_cmd(struct srpt_rdma_ch *ch, sizeof(srp_cmd->lun)); sizeof(srp_cmd->lun)); rc = target_submit_cmd(cmd, ch->sess, srp_cmd->cdb, rc = target_submit_cmd(cmd, ch->sess, srp_cmd->cdb, &send_ioctx->sense_data[0], unpacked_lun, data_len, &send_ioctx->sense_data[0], unpacked_lun, data_len, MSG_SIMPLE_TAG, dir, TARGET_SCF_ACK_KREF); TCM_SIMPLE_TAG, dir, TARGET_SCF_ACK_KREF); if (rc != 0) { if (rc != 0) { ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; goto send_sense; goto send_sense; Loading drivers/scsi/53c700.c +3 −38 Original line number Original line Diff line number Diff line Loading @@ -176,7 +176,6 @@ STATIC int NCR_700_slave_alloc(struct scsi_device *SDpnt); STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt); STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt); STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt); STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt); static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth); static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth); static int NCR_700_change_queue_type(struct scsi_device *SDpnt, int depth); STATIC struct device_attribute *NCR_700_dev_attrs[]; STATIC struct device_attribute *NCR_700_dev_attrs[]; Loading Loading @@ -326,7 +325,6 @@ NCR_700_detect(struct scsi_host_template *tpnt, tpnt->slave_destroy = NCR_700_slave_destroy; tpnt->slave_destroy = NCR_700_slave_destroy; tpnt->slave_alloc = NCR_700_slave_alloc; tpnt->slave_alloc = NCR_700_slave_alloc; tpnt->change_queue_depth = NCR_700_change_queue_depth; tpnt->change_queue_depth = NCR_700_change_queue_depth; tpnt->change_queue_type = NCR_700_change_queue_type; tpnt->use_blk_tags = 1; tpnt->use_blk_tags = 1; if(tpnt->name == NULL) if(tpnt->name == NULL) Loading Loading @@ -904,8 +902,8 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); SCp->device->tagged_supported = 0; SCp->device->tagged_supported = 0; SCp->device->simple_tags = 0; scsi_change_queue_depth(SCp->device, host->cmd_per_lun); scsi_change_queue_depth(SCp->device, host->cmd_per_lun); scsi_set_tag_type(SCp->device, 0); } else { } else { shost_printk(KERN_WARNING, host, shost_printk(KERN_WARNING, host, "(%d:%d) Unexpected REJECT Message %s\n", "(%d:%d) Unexpected REJECT Message %s\n", Loading Loading @@ -1818,8 +1816,8 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *) hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); } } if((hostdata->tag_negotiated &(1<<scmd_id(SCp))) if ((hostdata->tag_negotiated & (1<<scmd_id(SCp))) && && scsi_get_tag_type(SCp->device)) { SCp->device->simple_tags) { slot->tag = SCp->request->tag; slot->tag = SCp->request->tag; CDEBUG(KERN_DEBUG, SCp, "sending out tag %d, slot %p\n", CDEBUG(KERN_DEBUG, SCp, "sending out tag %d, slot %p\n", slot->tag, slot); slot->tag, slot); Loading Loading @@ -2082,39 +2080,6 @@ NCR_700_change_queue_depth(struct scsi_device *SDp, int depth) return scsi_change_queue_depth(SDp, depth); return scsi_change_queue_depth(SDp, depth); } } static int NCR_700_change_queue_type(struct scsi_device *SDp, int tag_type) { int change_tag = ((tag_type ==0 && scsi_get_tag_type(SDp) != 0) || (tag_type != 0 && scsi_get_tag_type(SDp) == 0)); struct NCR_700_Host_Parameters *hostdata = (struct NCR_700_Host_Parameters *)SDp->host->hostdata[0]; /* We have a global (per target) flag to track whether TCQ is * enabled, so we'll be turning it off for the entire target here. * our tag algorithm will fail if we mix tagged and untagged commands, * so quiesce the device before doing this */ if (change_tag) scsi_target_quiesce(SDp->sdev_target); scsi_set_tag_type(SDp, tag_type); if (!tag_type) { /* shift back to the default unqueued number of commands * (the user can still raise this) */ scsi_change_queue_depth(SDp, SDp->host->cmd_per_lun); hostdata->tag_negotiated &= ~(1 << sdev_id(SDp)); } else { /* Here, we cleared the negotiation flag above, so this * will force the driver to renegotiate */ scsi_change_queue_depth(SDp, SDp->queue_depth); if (change_tag) NCR_700_set_tag_neg_state(SDp, NCR_700_START_TAG_NEGOTIATION); } if (change_tag) scsi_target_resume(SDp->sdev_target); return tag_type; } static ssize_t static ssize_t NCR_700_show_active_tags(struct device *dev, struct device_attribute *attr, char *buf) NCR_700_show_active_tags(struct device *dev, struct device_attribute *attr, char *buf) { { Loading drivers/scsi/Kconfig +8 −9 Original line number Original line Diff line number Diff line Loading @@ -1462,18 +1462,17 @@ config SCSI_WD719X SCSI controllers (based on WD33C296A chip). SCSI controllers (based on WD33C296A chip). config SCSI_DEBUG config SCSI_DEBUG tristate "SCSI debugging host simulator" tristate "SCSI debugging host and device simulator" depends on SCSI depends on SCSI select CRC_T10DIF select CRC_T10DIF help help This is a host adapter simulator that can simulate multiple hosts This pseudo driver simulates one or more hosts (SCSI initiators), each with multiple dummy SCSI devices (disks). It defaults to one each with one or more targets, each with one or more logical units. host adapter with one dummy SCSI disk. Each dummy disk uses kernel Defaults to one of each, creating a small RAM disk device. Many RAM as storage (i.e. it is a ramdisk). To save space when multiple parameters found in the /sys/bus/pseudo/drivers/scsi_debug dummy disks are simulated, they share the same kernel RAM for directory can be tweaked at run time. their storage. See <http://sg.danny.cz/sg/sdebug26.html> for more See <http://sg.danny.cz/sg/sdebug26.html> for more information. information. This driver is primarily of use to those testing the Mainly used for testing and best as a module. If unsure, say N. SCSI and block subsystems. If unsure, say N. config SCSI_MESH config SCSI_MESH tristate "MESH (Power Mac internal SCSI) support" tristate "MESH (Power Mac internal SCSI) support" Loading drivers/scsi/advansys.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -7921,9 +7921,9 @@ static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, */ */ if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && (boardp->reqcnt[scp->device->id] % 255) == 0) { (boardp->reqcnt[scp->device->id] % 255) == 0) { asc_scsi_q->q2.tag_code = MSG_ORDERED_TAG; asc_scsi_q->q2.tag_code = ORDERED_QUEUE_TAG; } else { } else { asc_scsi_q->q2.tag_code = MSG_SIMPLE_TAG; asc_scsi_q->q2.tag_code = SIMPLE_QUEUE_TAG; } } /* Build ASC_SCSI_Q */ /* Build ASC_SCSI_Q */ Loading Loading @@ -8351,7 +8351,7 @@ static int AscPutReadyQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq, uchar q_no) } } q_addr = ASC_QNO_TO_QADDR(q_no); q_addr = ASC_QNO_TO_QADDR(q_no); if ((scsiq->q1.target_id & asc_dvc->use_tagged_qng) == 0) { if ((scsiq->q1.target_id & asc_dvc->use_tagged_qng) == 0) { scsiq->q2.tag_code &= ~MSG_SIMPLE_TAG; scsiq->q2.tag_code &= ~SIMPLE_QUEUE_TAG; } } scsiq->q1.status = QS_FREE; scsiq->q1.status = QS_FREE; AscMemWordCopyPtrToLram(iop_base, AscMemWordCopyPtrToLram(iop_base, Loading Loading @@ -8669,7 +8669,7 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) } } } } if (disable_syn_offset_one_fix) { if (disable_syn_offset_one_fix) { scsiq->q2.tag_code &= ~MSG_SIMPLE_TAG; scsiq->q2.tag_code &= ~SIMPLE_QUEUE_TAG; scsiq->q2.tag_code |= (ASC_TAG_FLAG_DISABLE_ASYN_USE_SYN_FIX | scsiq->q2.tag_code |= (ASC_TAG_FLAG_DISABLE_ASYN_USE_SYN_FIX | ASC_TAG_FLAG_DISABLE_DISCONNECT); ASC_TAG_FLAG_DISABLE_DISCONNECT); } else { } else { Loading Loading
drivers/infiniband/ulp/srp/ib_srp.c +0 −1 Original line number Original line Diff line number Diff line Loading @@ -2740,7 +2740,6 @@ static struct scsi_host_template srp_template = { .info = srp_target_info, .info = srp_target_info, .queuecommand = srp_queuecommand, .queuecommand = srp_queuecommand, .change_queue_depth = srp_change_queue_depth, .change_queue_depth = srp_change_queue_depth, .change_queue_type = scsi_change_queue_type, .eh_abort_handler = srp_abort, .eh_abort_handler = srp_abort, .eh_device_reset_handler = srp_reset_device, .eh_device_reset_handler = srp_reset_device, .eh_host_reset_handler = srp_reset_host, .eh_host_reset_handler = srp_reset_host, Loading
drivers/infiniband/ulp/srpt/ib_srpt.c +5 −5 Original line number Original line Diff line number Diff line Loading @@ -1708,17 +1708,17 @@ static int srpt_handle_cmd(struct srpt_rdma_ch *ch, switch (srp_cmd->task_attr) { switch (srp_cmd->task_attr) { case SRP_CMD_SIMPLE_Q: case SRP_CMD_SIMPLE_Q: cmd->sam_task_attr = MSG_SIMPLE_TAG; cmd->sam_task_attr = TCM_SIMPLE_TAG; break; break; case SRP_CMD_ORDERED_Q: case SRP_CMD_ORDERED_Q: default: default: cmd->sam_task_attr = MSG_ORDERED_TAG; cmd->sam_task_attr = TCM_ORDERED_TAG; break; break; case SRP_CMD_HEAD_OF_Q: case SRP_CMD_HEAD_OF_Q: cmd->sam_task_attr = MSG_HEAD_TAG; cmd->sam_task_attr = TCM_HEAD_TAG; break; break; case SRP_CMD_ACA: case SRP_CMD_ACA: cmd->sam_task_attr = MSG_ACA_TAG; cmd->sam_task_attr = TCM_ACA_TAG; break; break; } } Loading @@ -1733,7 +1733,7 @@ static int srpt_handle_cmd(struct srpt_rdma_ch *ch, sizeof(srp_cmd->lun)); sizeof(srp_cmd->lun)); rc = target_submit_cmd(cmd, ch->sess, srp_cmd->cdb, rc = target_submit_cmd(cmd, ch->sess, srp_cmd->cdb, &send_ioctx->sense_data[0], unpacked_lun, data_len, &send_ioctx->sense_data[0], unpacked_lun, data_len, MSG_SIMPLE_TAG, dir, TARGET_SCF_ACK_KREF); TCM_SIMPLE_TAG, dir, TARGET_SCF_ACK_KREF); if (rc != 0) { if (rc != 0) { ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; goto send_sense; goto send_sense; Loading
drivers/scsi/53c700.c +3 −38 Original line number Original line Diff line number Diff line Loading @@ -176,7 +176,6 @@ STATIC int NCR_700_slave_alloc(struct scsi_device *SDpnt); STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt); STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt); STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt); STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt); static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth); static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth); static int NCR_700_change_queue_type(struct scsi_device *SDpnt, int depth); STATIC struct device_attribute *NCR_700_dev_attrs[]; STATIC struct device_attribute *NCR_700_dev_attrs[]; Loading Loading @@ -326,7 +325,6 @@ NCR_700_detect(struct scsi_host_template *tpnt, tpnt->slave_destroy = NCR_700_slave_destroy; tpnt->slave_destroy = NCR_700_slave_destroy; tpnt->slave_alloc = NCR_700_slave_alloc; tpnt->slave_alloc = NCR_700_slave_alloc; tpnt->change_queue_depth = NCR_700_change_queue_depth; tpnt->change_queue_depth = NCR_700_change_queue_depth; tpnt->change_queue_type = NCR_700_change_queue_type; tpnt->use_blk_tags = 1; tpnt->use_blk_tags = 1; if(tpnt->name == NULL) if(tpnt->name == NULL) Loading Loading @@ -904,8 +902,8 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); SCp->device->tagged_supported = 0; SCp->device->tagged_supported = 0; SCp->device->simple_tags = 0; scsi_change_queue_depth(SCp->device, host->cmd_per_lun); scsi_change_queue_depth(SCp->device, host->cmd_per_lun); scsi_set_tag_type(SCp->device, 0); } else { } else { shost_printk(KERN_WARNING, host, shost_printk(KERN_WARNING, host, "(%d:%d) Unexpected REJECT Message %s\n", "(%d:%d) Unexpected REJECT Message %s\n", Loading Loading @@ -1818,8 +1816,8 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *) hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); } } if((hostdata->tag_negotiated &(1<<scmd_id(SCp))) if ((hostdata->tag_negotiated & (1<<scmd_id(SCp))) && && scsi_get_tag_type(SCp->device)) { SCp->device->simple_tags) { slot->tag = SCp->request->tag; slot->tag = SCp->request->tag; CDEBUG(KERN_DEBUG, SCp, "sending out tag %d, slot %p\n", CDEBUG(KERN_DEBUG, SCp, "sending out tag %d, slot %p\n", slot->tag, slot); slot->tag, slot); Loading Loading @@ -2082,39 +2080,6 @@ NCR_700_change_queue_depth(struct scsi_device *SDp, int depth) return scsi_change_queue_depth(SDp, depth); return scsi_change_queue_depth(SDp, depth); } } static int NCR_700_change_queue_type(struct scsi_device *SDp, int tag_type) { int change_tag = ((tag_type ==0 && scsi_get_tag_type(SDp) != 0) || (tag_type != 0 && scsi_get_tag_type(SDp) == 0)); struct NCR_700_Host_Parameters *hostdata = (struct NCR_700_Host_Parameters *)SDp->host->hostdata[0]; /* We have a global (per target) flag to track whether TCQ is * enabled, so we'll be turning it off for the entire target here. * our tag algorithm will fail if we mix tagged and untagged commands, * so quiesce the device before doing this */ if (change_tag) scsi_target_quiesce(SDp->sdev_target); scsi_set_tag_type(SDp, tag_type); if (!tag_type) { /* shift back to the default unqueued number of commands * (the user can still raise this) */ scsi_change_queue_depth(SDp, SDp->host->cmd_per_lun); hostdata->tag_negotiated &= ~(1 << sdev_id(SDp)); } else { /* Here, we cleared the negotiation flag above, so this * will force the driver to renegotiate */ scsi_change_queue_depth(SDp, SDp->queue_depth); if (change_tag) NCR_700_set_tag_neg_state(SDp, NCR_700_START_TAG_NEGOTIATION); } if (change_tag) scsi_target_resume(SDp->sdev_target); return tag_type; } static ssize_t static ssize_t NCR_700_show_active_tags(struct device *dev, struct device_attribute *attr, char *buf) NCR_700_show_active_tags(struct device *dev, struct device_attribute *attr, char *buf) { { Loading
drivers/scsi/Kconfig +8 −9 Original line number Original line Diff line number Diff line Loading @@ -1462,18 +1462,17 @@ config SCSI_WD719X SCSI controllers (based on WD33C296A chip). SCSI controllers (based on WD33C296A chip). config SCSI_DEBUG config SCSI_DEBUG tristate "SCSI debugging host simulator" tristate "SCSI debugging host and device simulator" depends on SCSI depends on SCSI select CRC_T10DIF select CRC_T10DIF help help This is a host adapter simulator that can simulate multiple hosts This pseudo driver simulates one or more hosts (SCSI initiators), each with multiple dummy SCSI devices (disks). It defaults to one each with one or more targets, each with one or more logical units. host adapter with one dummy SCSI disk. Each dummy disk uses kernel Defaults to one of each, creating a small RAM disk device. Many RAM as storage (i.e. it is a ramdisk). To save space when multiple parameters found in the /sys/bus/pseudo/drivers/scsi_debug dummy disks are simulated, they share the same kernel RAM for directory can be tweaked at run time. their storage. See <http://sg.danny.cz/sg/sdebug26.html> for more See <http://sg.danny.cz/sg/sdebug26.html> for more information. information. This driver is primarily of use to those testing the Mainly used for testing and best as a module. If unsure, say N. SCSI and block subsystems. If unsure, say N. config SCSI_MESH config SCSI_MESH tristate "MESH (Power Mac internal SCSI) support" tristate "MESH (Power Mac internal SCSI) support" Loading
drivers/scsi/advansys.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -7921,9 +7921,9 @@ static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, */ */ if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && (boardp->reqcnt[scp->device->id] % 255) == 0) { (boardp->reqcnt[scp->device->id] % 255) == 0) { asc_scsi_q->q2.tag_code = MSG_ORDERED_TAG; asc_scsi_q->q2.tag_code = ORDERED_QUEUE_TAG; } else { } else { asc_scsi_q->q2.tag_code = MSG_SIMPLE_TAG; asc_scsi_q->q2.tag_code = SIMPLE_QUEUE_TAG; } } /* Build ASC_SCSI_Q */ /* Build ASC_SCSI_Q */ Loading Loading @@ -8351,7 +8351,7 @@ static int AscPutReadyQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq, uchar q_no) } } q_addr = ASC_QNO_TO_QADDR(q_no); q_addr = ASC_QNO_TO_QADDR(q_no); if ((scsiq->q1.target_id & asc_dvc->use_tagged_qng) == 0) { if ((scsiq->q1.target_id & asc_dvc->use_tagged_qng) == 0) { scsiq->q2.tag_code &= ~MSG_SIMPLE_TAG; scsiq->q2.tag_code &= ~SIMPLE_QUEUE_TAG; } } scsiq->q1.status = QS_FREE; scsiq->q1.status = QS_FREE; AscMemWordCopyPtrToLram(iop_base, AscMemWordCopyPtrToLram(iop_base, Loading Loading @@ -8669,7 +8669,7 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) } } } } if (disable_syn_offset_one_fix) { if (disable_syn_offset_one_fix) { scsiq->q2.tag_code &= ~MSG_SIMPLE_TAG; scsiq->q2.tag_code &= ~SIMPLE_QUEUE_TAG; scsiq->q2.tag_code |= (ASC_TAG_FLAG_DISABLE_ASYN_USE_SYN_FIX | scsiq->q2.tag_code |= (ASC_TAG_FLAG_DISABLE_ASYN_USE_SYN_FIX | ASC_TAG_FLAG_DISABLE_DISCONNECT); ASC_TAG_FLAG_DISABLE_DISCONNECT); } else { } else { Loading