Now that all commands that transfer data use SG lists there is no reasons for drivers to check these flags from the read/write path as we'll never get anyting else. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: lio-core/drivers/infiniband/ulp/srpt/ib_srpt.c =================================================================== --- lio-core.orig/drivers/infiniband/ulp/srpt/ib_srpt.c 2011-10-14 11:50:45.744394204 +0200 +++ lio-core/drivers/infiniband/ulp/srpt/ib_srpt.c 2011-10-14 11:53:25.780394681 +0200 @@ -1126,18 +1126,12 @@ static int srpt_map_sg_to_ib_sge(struct cmd = &ioctx->cmd; dir = cmd->data_direction; BUG_ON(dir == DMA_NONE); - if (cmd->se_cmd_flags & (SCF_SCSI_DATA_SG_IO_CDB - | SCF_SCSI_CONTROL_SG_IO_CDB)) { - transport_do_task_sg_chain(cmd); - sg = sg_orig = cmd->t_tasks_sg_chained; - sg_cnt = cmd->t_tasks_sg_chained_no; - } else { - pr_debug("?? sg == NULL\n"); - ioctx->mapped_sg_count = 0; - return 0; - } - ioctx->sg = sg; - ioctx->sg_cnt = sg_cnt; + + transport_do_task_sg_chain(cmd); + + ioctx->sg = sg = sg_orig = cmd->t_tasks_sg_chained; + ioctx->sg_cnt = sg_cnt = cmd->t_tasks_sg_chained_no; + count = ib_dma_map_sg(ch->sport->sdev->device, sg, sg_cnt, opposite_dma_dir(dir)); if (unlikely(!count)) Index: lio-core/drivers/scsi/ibmvscsi/ibmvscsis.c =================================================================== --- lio-core.orig/drivers/scsi/ibmvscsi/ibmvscsis.c 2011-10-14 11:50:45.764397209 +0200 +++ lio-core/drivers/scsi/ibmvscsi/ibmvscsis.c 2011-10-14 11:52:33.103894411 +0200 @@ -1249,24 +1249,10 @@ static int ibmvscsis_write_pending(struc sc->sdb.length = se_cmd->data_length; - if ((se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) || - (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB)) { - transport_do_task_sg_chain(se_cmd); - - sc->sdb.table.nents = se_cmd->t_task.t_tasks_sg_chained_no; - sc->sdb.table.sgl = se_cmd->t_task.t_tasks_sg_chained; - } else if (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_NONSG_IO_CDB) { - /* - * Use T_TASK(se_cmd)->t_tasks_sg_bounce for control CDBs - * using a contigious buffer - */ - sg_init_table(&se_cmd->t_task.t_tasks_sg_bounce, 1); - sg_set_buf(&se_cmd->t_task.t_tasks_sg_bounce, - se_cmd->t_task.t_task_buf, se_cmd->data_length); + transport_do_task_sg_chain(se_cmd); - sc->sdb.table.nents = 1; - sc->sdb.table.sgl = &se_cmd->t_task.t_tasks_sg_bounce; - } + sc->sdb.table.nents = se_cmd->t_task.t_tasks_sg_chained_no; + sc->sdb.table.sgl = se_cmd->t_task.t_tasks_sg_chained; ret = srp_transfer_data(sc, &vio_iu(iue)->srp.cmd, ibmvscsis_rdma, 1, 1); @@ -1298,24 +1284,11 @@ static int ibmvscsis_queue_data_in(struc /* * Setup the struct se_task->task_sg[] chained SG list */ - if ((se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) || - (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB)) { - transport_do_task_sg_chain(se_cmd); - - sc->sdb.table.nents = se_cmd->t_task.t_tasks_sg_chained_no; - sc->sdb.table.sgl = se_cmd->t_task.t_tasks_sg_chained; - } else if (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_NONSG_IO_CDB) { - /* - * Use T_TASK(se_cmd)->t_tasks_sg_bounce for control CDBs - * using a contigious buffer - */ - sg_init_table(&se_cmd->t_task.t_tasks_sg_bounce, 1); - sg_set_buf(&se_cmd->t_task.t_tasks_sg_bounce, - se_cmd->t_task.t_task_buf, se_cmd->data_length); + transport_do_task_sg_chain(se_cmd); + + sc->sdb.table.nents = se_cmd->t_task.t_tasks_sg_chained_no; + sc->sdb.table.sgl = se_cmd->t_task.t_tasks_sg_chained; - sc->sdb.table.nents = 1; - sc->sdb.table.sgl = &se_cmd->t_task.t_tasks_sg_bounce; - } /* * This will call srp_transfer_data() and post the response * to VIO via libsrp. Index: lio-core/drivers/scsi/qla2xxx/qla_target.c =================================================================== --- lio-core.orig/drivers/scsi/qla2xxx/qla_target.c 2011-10-14 11:50:45.784396033 +0200 +++ lio-core/drivers/scsi/qla2xxx/qla_target.c 2011-10-14 11:52:44.788396416 +0200 @@ -3997,11 +3997,8 @@ restart: } se_cmd = &cmd->se_cmd; - if ((se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) || - (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB)) { - cmd->sg_cnt = se_cmd->t_tasks_sg_chained_no; - cmd->sg = se_cmd->t_tasks_sg_chained; - } + cmd->sg_cnt = se_cmd->t_tasks_sg_chained_no; + cmd->sg = se_cmd->t_tasks_sg_chained; ql_dbg(ql_dbg_tgt_mgt, vha, 0xe131, "SRR cmd %p (se_cmd %p, tag %d, op %x), " "sg_cnt=%d, offset=%d", cmd, &cmd->se_cmd, Index: lio-core/drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.c =================================================================== --- lio-core.orig/drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.c 2011-10-14 11:50:45.824395240 +0200 +++ lio-core/drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.c 2011-10-14 11:53:22.315895457 +0200 @@ -623,20 +623,12 @@ int tcm_qla2xxx_write_pending(struct se_ cmd->bufflen = se_cmd->data_length; cmd->dma_data_direction = tcm_qla2xxx_mapping_dir(se_cmd); + /* * Setup the struct se_task->task_sg[] chained SG list */ - if ((se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) || - (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB)) { - transport_do_task_sg_chain(se_cmd); + transport_do_task_sg_chain(se_cmd); - cmd->sg_cnt = se_cmd->t_tasks_sg_chained_no; - cmd->sg = se_cmd->t_tasks_sg_chained; - } else { - pr_err("Unknown se_cmd_flags: 0x%08x in" - " tcm_qla2xxx_write_pending()\n", se_cmd->se_cmd_flags); - BUG(); - } /* * qla_target.c:qla_tgt_rdy_to_xfer() will call pci_map_sg() to setup * the SGL mappings into PCIe memory for incoming FCP WRITE data. @@ -867,20 +859,13 @@ int tcm_qla2xxx_queue_data_in(struct se_ cmd->bufflen = se_cmd->data_length; cmd->dma_data_direction = tcm_qla2xxx_mapping_dir(se_cmd); cmd->aborted = atomic_read(&se_cmd->t_transport_aborted); + /* * Setup the struct se_task->task_sg[] chained SG list */ - if ((se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) || - (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB)) { - transport_do_task_sg_chain(se_cmd); - - cmd->sg_cnt = se_cmd->t_tasks_sg_chained_no; - cmd->sg = se_cmd->t_tasks_sg_chained; - } else { - cmd->sg_cnt = 0; - cmd->sg = NULL; - } - + transport_do_task_sg_chain(se_cmd); + cmd->sg_cnt = se_cmd->t_tasks_sg_chained_no; + cmd->sg = se_cmd->t_tasks_sg_chained; cmd->offset = 0; /* -- 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