target: remove the task_sg_bidi field se_task and pSCSI BIDI support
authorChristoph Hellwig <hch@infradead.org>
Tue, 18 Oct 2011 10:57:00 +0000 (06:57 -0400)
committerNicholas Bellinger <nab@linux-iscsi.org>
Mon, 24 Oct 2011 03:21:56 +0000 (03:21 +0000)
This field is never used given that BIDI handling happens at the
command and not the task level.  Remove it and the dead code in
pscsi that tries to work on it.

It also prevents pSCSI passthrough for the two currently enabled BIDI
commands now that task->task_sg_bidi support has been removed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_pscsi.c
drivers/target/target_core_transport.c
include/target/target_core_base.h

index 936b9fec4cca3b788c6ac80ee5279adc0c988d54..dad671dee9e92172c04142a7dfd4ae6dcc8d206c 100644 (file)
@@ -1095,32 +1095,6 @@ static int pscsi_do_task(struct se_task *task)
                        pr_err("pSCSI: blk_make_request() failed\n");
                        goto fail;
                }
-
-               if (task->task_sg_bidi) {
-                       /*
-                        * If present, set up the extra BIDI-COMMAND SCSI READ
-                        * struct request and payload.
-                        */
-                       ret = pscsi_map_sg(task, task->task_sg_bidi, &hbio);
-                       if (ret < 0) {
-                               /* XXX: free the main request? */
-                               return PYX_TRANSPORT_LU_COMM_FAILURE;
-                       }
-
-                       /*
-                        * Setup the secondary pt->pscsi_req->next_rq used for the extra
-                        * BIDI READ payload.
-                        */
-                       req->next_rq = blk_make_request(pdv->pdv_sd->request_queue,
-                                                       hbio, GFP_KERNEL);
-                       if (!req) {
-                               pr_err("pSCSI: blk_make_request() failed for BIDI\n");
-                               /* XXX: free the main request? */
-                               goto fail;
-                       }
-
-                       req->next_rq->cmd_type = REQ_TYPE_BLOCK_PC;
-               }
        }
 
        req->cmd_type = REQ_TYPE_BLOCK_PC;
@@ -1240,12 +1214,6 @@ static void pscsi_req_done(struct request *req, int uptodate)
        pt->pscsi_resid = req->resid_len;
 
        pscsi_process_SAM_status(task, pt);
-       /*
-        * Release BIDI-READ if present
-        */
-       if (req->next_rq != NULL)
-               __blk_put_request(req->q, req->next_rq);
-
        __blk_put_request(req->q, req);
 }
 
index 06305beb61dd57d266c0a43c4c95044ea1a88a93..624d86ea083bc51cfc9ea6d973695d9a2d371c49 100644 (file)
@@ -2871,13 +2871,10 @@ static int transport_generic_cmd_sequencer(
                size = transport_get_size(sectors, cdb, cmd);
                cmd->t_task_lba = transport_lba_32(cdb);
                cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
-               passthrough = (dev->transport->transport_type ==
-                               TRANSPORT_PLUGIN_PHBA_PDEV);
-               /*
-                * Skip the remaining assignments for TCM/PSCSI passthrough
-                */
-               if (passthrough)
-                       break;
+
+               if (dev->transport->transport_type ==
+                               TRANSPORT_PLUGIN_PHBA_PDEV)
+                       goto out_unsupported_cdb;
                /*
                 * Setup BIDI XOR callback to be run after I/O completion.
                 */
@@ -2906,12 +2903,8 @@ static int transport_generic_cmd_sequencer(
                        cmd->t_task_lba = transport_lba_64_ext(cdb);
                        cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
 
-                       /*
-                        * Skip the remaining assignments for TCM/PSCSI passthrough
-                        */
                        if (passthrough)
-                               break;
-
+                               goto out_unsupported_cdb;
                        /*
                         * Setup BIDI XOR callback to be run during after I/O
                         * completion.
@@ -3562,7 +3555,6 @@ static void transport_free_dev_tasks(struct se_cmd *cmd)
                 */
                del_timer_sync(&task->task_timer);
 
-               kfree(task->task_sg_bidi);
                kfree(task->task_sg);
 
                list_del(&task->t_list);
index 8e2c83d4fbad3687526b85fcebc424bb052a3640..132266b15b7cd97bf7373d7686d9e9b980311ced 100644 (file)
@@ -397,7 +397,6 @@ struct se_task {
        u32                     task_size;
        struct se_cmd           *task_se_cmd;
        struct scatterlist      *task_sg;
-       struct scatterlist      *task_sg_bidi;
        u32                     task_sg_nents;
        u16                     task_flags;
        u8                      task_sense;