[PATCH] target: remove SCF_SCSI_*_CDB abuse in fabric drivers

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

 



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


[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux