Commit 7c1c6af3 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Nicholas Bellinger

target: remove the task_sg_bidi field se_task and pSCSI BIDI support

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: default avatarChristoph Hellwig <hch@lst.de>
Cc: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent dbc5623e
...@@ -1095,32 +1095,6 @@ static int pscsi_do_task(struct se_task *task) ...@@ -1095,32 +1095,6 @@ static int pscsi_do_task(struct se_task *task)
pr_err("pSCSI: blk_make_request() failed\n"); pr_err("pSCSI: blk_make_request() failed\n");
goto fail; 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; req->cmd_type = REQ_TYPE_BLOCK_PC;
...@@ -1240,12 +1214,6 @@ static void pscsi_req_done(struct request *req, int uptodate) ...@@ -1240,12 +1214,6 @@ static void pscsi_req_done(struct request *req, int uptodate)
pt->pscsi_resid = req->resid_len; pt->pscsi_resid = req->resid_len;
pscsi_process_SAM_status(task, pt); 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); __blk_put_request(req->q, req);
} }
......
...@@ -2871,13 +2871,10 @@ static int transport_generic_cmd_sequencer( ...@@ -2871,13 +2871,10 @@ static int transport_generic_cmd_sequencer(
size = transport_get_size(sectors, cdb, cmd); size = transport_get_size(sectors, cdb, cmd);
cmd->t_task_lba = transport_lba_32(cdb); cmd->t_task_lba = transport_lba_32(cdb);
cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB; cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
passthrough = (dev->transport->transport_type ==
TRANSPORT_PLUGIN_PHBA_PDEV); if (dev->transport->transport_type ==
/* TRANSPORT_PLUGIN_PHBA_PDEV)
* Skip the remaining assignments for TCM/PSCSI passthrough goto out_unsupported_cdb;
*/
if (passthrough)
break;
/* /*
* Setup BIDI XOR callback to be run after I/O completion. * Setup BIDI XOR callback to be run after I/O completion.
*/ */
...@@ -2906,12 +2903,8 @@ static int transport_generic_cmd_sequencer( ...@@ -2906,12 +2903,8 @@ static int transport_generic_cmd_sequencer(
cmd->t_task_lba = transport_lba_64_ext(cdb); cmd->t_task_lba = transport_lba_64_ext(cdb);
cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB; cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
/*
* Skip the remaining assignments for TCM/PSCSI passthrough
*/
if (passthrough) if (passthrough)
break; goto out_unsupported_cdb;
/* /*
* Setup BIDI XOR callback to be run during after I/O * Setup BIDI XOR callback to be run during after I/O
* completion. * completion.
...@@ -3562,7 +3555,6 @@ static void transport_free_dev_tasks(struct se_cmd *cmd) ...@@ -3562,7 +3555,6 @@ static void transport_free_dev_tasks(struct se_cmd *cmd)
*/ */
del_timer_sync(&task->task_timer); del_timer_sync(&task->task_timer);
kfree(task->task_sg_bidi);
kfree(task->task_sg); kfree(task->task_sg);
list_del(&task->t_list); list_del(&task->t_list);
......
...@@ -397,7 +397,6 @@ struct se_task { ...@@ -397,7 +397,6 @@ struct se_task {
u32 task_size; u32 task_size;
struct se_cmd *task_se_cmd; struct se_cmd *task_se_cmd;
struct scatterlist *task_sg; struct scatterlist *task_sg;
struct scatterlist *task_sg_bidi;
u32 task_sg_nents; u32 task_sg_nents;
u16 task_flags; u16 task_flags;
u8 task_sense; u8 task_sense;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment