Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 302403
b: refs/heads/master
c: ed3102c
h: refs/heads/master
i:
  302401: 390b691
  302399: 90ee5a0
v: v3
  • Loading branch information
Christoph Hellwig authored and Nicholas Bellinger committed May 6, 2012
1 parent 23301bd commit 4a55d5d
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 53 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: 32d8d2e4300cabb0acbf4b60fa695924be27d0d1
refs/heads/master: ed3102c678c6274933948f9097bb4e2b314e5f82
49 changes: 0 additions & 49 deletions trunk/drivers/target/target_core_cdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1148,52 +1148,3 @@ int target_emulate_noop(struct se_task *task)
transport_complete_task(task, 1);
return 0;
}

/*
* 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;
unsigned int cdb_len = scsi_command_size(cmd->t_task_cdb);

memcpy(cdb, cmd->t_task_cdb, cdb_len);
if (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) {
unsigned long long lba = task->task_lba;
u32 sectors = task->task_sectors;

switch (cdb_len) {
case 6:
/* 21-bit LBA and 8-bit sectors */
cdb[1] = (lba >> 16) & 0x1f;
cdb[2] = (lba >> 8) & 0xff;
cdb[3] = lba & 0xff;
cdb[4] = sectors & 0xff;
break;
case 10:
/* 32-bit LBA and 16-bit sectors */
put_unaligned_be32(lba, &cdb[2]);
put_unaligned_be16(sectors, &cdb[7]);
break;
case 12:
/* 32-bit LBA and 32-bit sectors */
put_unaligned_be32(lba, &cdb[2]);
put_unaligned_be32(sectors, &cdb[6]);
break;
case 16:
/* 64-bit LBA and 32-bit sectors */
put_unaligned_be64(lba, &cdb[2]);
put_unaligned_be32(sectors, &cdb[10]);
break;
case 32:
/* 64-bit LBA and 32-bit sectors, extended CDB */
put_unaligned_be64(lba, &cdb[12]);
put_unaligned_be32(sectors, &cdb[28]);
break;
default:
BUG();
}
}
}
EXPORT_SYMBOL(target_get_task_cdb);
3 changes: 2 additions & 1 deletion trunk/drivers/target/target_core_pscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1070,7 +1070,8 @@ static int pscsi_do_task(struct se_task *task)
struct bio *hbio;
int ret;

target_get_task_cdb(task, pt->pscsi_cdb);
memcpy(pt->pscsi_cdb, cmd->t_task_cdb,
scsi_command_size(cmd->t_task_cdb));

if (task->task_se_cmd->se_cmd_flags & SCF_SCSI_NON_DATA_CDB) {
req = blk_get_request(pdv->pdv_sd->request_queue,
Expand Down
2 changes: 0 additions & 2 deletions trunk/include/target/target_core_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ struct se_device *transport_add_device_to_core_hba(struct se_hba *,
void transport_complete_sync_cache(struct se_cmd *, int);
void transport_complete_task(struct se_task *, int);

void target_get_task_cdb(struct se_task *, unsigned char *);

void transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *);
int transport_set_vpd_assoc(struct t10_vpd *, unsigned char *);
int transport_set_vpd_ident_type(struct t10_vpd *, unsigned char *);
Expand Down

0 comments on commit 4a55d5d

Please sign in to comment.