|
@@ -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);
|