Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 264693
b: refs/heads/master
c: 485fd0d
h: refs/heads/master
i:
  264691: b3e13c1
v: v3
  • Loading branch information
Christoph Hellwig authored and Nicholas Bellinger committed Oct 24, 2011
1 parent 6671e09 commit c0a9102
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 36 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6193f06e6fe27c9475e407cb3cf2b0d4cd2725b0
refs/heads/master: 485fd0d1e3b8010b538bd0b209f3592acc825677
16 changes: 16 additions & 0 deletions trunk/drivers/target/target_core_cdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1265,3 +1265,19 @@ transport_emulate_control_cdb(struct se_task *task)

return PYX_TRANSPORT_SENT_TO_TRANSPORT;
}

/*
* Write a CDB into @cdb that is based on the one the intiator sent us,
* but updated to only cover the sectors that the current task handles.
*/
void target_get_task_cdb(struct se_task *task, unsigned char *cdb)
{
struct se_cmd *cmd = task->task_se_cmd;

memcpy(cdb, cmd->t_task_cdb, scsi_command_size(cmd->t_task_cdb));
if (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) {
cmd->transport_split_cdb(task->task_lba, task->task_sectors,
cdb);
}
}
EXPORT_SYMBOL(target_get_task_cdb);
15 changes: 2 additions & 13 deletions trunk/drivers/target/target_core_pscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1068,6 +1068,8 @@ static int pscsi_do_task(struct se_task *task)
struct bio *hbio;
int ret;

target_get_task_cdb(task, pt->pscsi_cdb);

if (task->task_se_cmd->se_cmd_flags & SCF_SCSI_NON_DATA_CDB) {
req = blk_get_request(pdv->pdv_sd->request_queue,
(task->task_data_direction == DMA_TO_DEVICE),
Expand Down Expand Up @@ -1150,18 +1152,6 @@ static int pscsi_do_task(struct se_task *task)
return PYX_TRANSPORT_OUT_OF_MEMORY_RESOURCES;
}


/* pscsi_get_cdb():
*
*
*/
static unsigned char *pscsi_get_cdb(struct se_task *task)
{
struct pscsi_plugin_task *pt = PSCSI_TASK(task);

return pt->pscsi_cdb;
}

/* pscsi_get_sense_buffer():
*
*
Expand Down Expand Up @@ -1276,7 +1266,6 @@ static struct se_subsystem_api pscsi_template = {
.check_configfs_dev_params = pscsi_check_configfs_dev_params,
.set_configfs_dev_params = pscsi_set_configfs_dev_params,
.show_configfs_dev_params = pscsi_show_configfs_dev_params,
.get_cdb = pscsi_get_cdb,
.get_sense_buffer = pscsi_get_sense_buffer,
.get_device_rev = pscsi_get_device_rev,
.get_device_type = pscsi_get_device_type,
Expand Down
18 changes: 0 additions & 18 deletions trunk/drivers/target/target_core_transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -3958,17 +3958,6 @@ static int transport_allocate_data_tasks(
task->task_sectors = min(sectors, dev_max_sectors);
task->task_size = task->task_sectors * sector_size;

if (dev->transport->get_cdb) {
unsigned char *cdb = dev->transport->get_cdb(task);

memcpy(cdb, cmd->t_task_cdb,
scsi_command_size(cmd->t_task_cdb));

/* Update new cdb with updated lba/sectors */
cmd->transport_split_cdb(task->task_lba,
task->task_sectors, cdb);
}

/*
* This now assumes that passed sg_ents are in PAGE_SIZE chunks
* in order to calculate the number per task SGL entries
Expand Down Expand Up @@ -4022,20 +4011,13 @@ static int transport_allocate_data_tasks(
static int
transport_allocate_control_task(struct se_cmd *cmd)
{
struct se_device *dev = cmd->se_dev;
struct se_task *task;
unsigned long flags;

task = transport_generic_get_task(cmd, cmd->data_direction);
if (!task)
return -ENOMEM;

if (dev->transport->get_cdb) {
unsigned char *cdb = dev->transport->get_cdb(task);

memcpy(cdb, cmd->t_task_cdb, scsi_command_size(cmd->t_task_cdb));
}

task->task_sg = kmalloc(sizeof(struct scatterlist) * cmd->t_data_nents,
GFP_KERNEL);
if (!task->task_sg) {
Expand Down
5 changes: 1 addition & 4 deletions trunk/include/target/target_core_transport.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ extern int transport_generic_do_tmr(struct se_cmd *);
extern int core_alua_check_nonop_delay(struct se_cmd *);
/* From target_core_cdb.c */
extern int transport_emulate_control_cdb(struct se_task *);
extern void target_get_task_cdb(struct se_task *task, unsigned char *cdb);

/*
* Each se_transport_task_t can have N number of possible struct se_task's
Expand Down Expand Up @@ -308,10 +309,6 @@ struct se_subsystem_api {
*/
ssize_t (*show_configfs_dev_params)(struct se_hba *, struct se_subsystem_dev *,
char *);
/*
* get_cdb():
*/
unsigned char *(*get_cdb)(struct se_task *);
/*
* get_device_rev():
*/
Expand Down

0 comments on commit c0a9102

Please sign in to comment.