提交 2d3a4b51 编写于 作者: C Christoph Hellwig 提交者: Nicholas Bellinger

target: remove the t_tasks_fua se_cmd field

And use a SCF_FUA flag instead.
Signed-off-by: NChristoph Hellwig <hch@lst.de>
Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
上级 aad13ca2
...@@ -438,7 +438,7 @@ static int fd_do_task(struct se_task *task) ...@@ -438,7 +438,7 @@ static int fd_do_task(struct se_task *task)
if (ret > 0 && if (ret > 0 &&
dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0 && dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0 &&
dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 && dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 &&
cmd->t_tasks_fua) { (cmd->se_cmd_flags & SCF_FUA)) {
/* /*
* We might need to be a bit smarter here * We might need to be a bit smarter here
* and return some sense data to let the initiator * and return some sense data to let the initiator
......
...@@ -531,7 +531,7 @@ static int iblock_do_task(struct se_task *task) ...@@ -531,7 +531,7 @@ static int iblock_do_task(struct se_task *task)
*/ */
if (dev->se_sub_dev->se_dev_attrib.emulate_write_cache == 0 || if (dev->se_sub_dev->se_dev_attrib.emulate_write_cache == 0 ||
(dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 && (dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 &&
task->task_se_cmd->t_tasks_fua)) (cmd->se_cmd_flags & SCF_FUA)))
rw = WRITE_FUA; rw = WRITE_FUA;
else else
rw = WRITE; rw = WRITE;
......
...@@ -2572,7 +2572,8 @@ static int transport_generic_cmd_sequencer( ...@@ -2572,7 +2572,8 @@ static int transport_generic_cmd_sequencer(
goto out_unsupported_cdb; goto out_unsupported_cdb;
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->t_tasks_fua = (cdb[1] & 0x8); if (cdb[1] & 0x8)
cmd->se_cmd_flags |= SCF_FUA;
cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB; cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
break; break;
case WRITE_12: case WRITE_12:
...@@ -2581,7 +2582,8 @@ static int transport_generic_cmd_sequencer( ...@@ -2581,7 +2582,8 @@ static int transport_generic_cmd_sequencer(
goto out_unsupported_cdb; goto out_unsupported_cdb;
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->t_tasks_fua = (cdb[1] & 0x8); if (cdb[1] & 0x8)
cmd->se_cmd_flags |= SCF_FUA;
cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB; cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
break; break;
case WRITE_16: case WRITE_16:
...@@ -2590,7 +2592,8 @@ static int transport_generic_cmd_sequencer( ...@@ -2590,7 +2592,8 @@ static int transport_generic_cmd_sequencer(
goto out_unsupported_cdb; goto out_unsupported_cdb;
size = transport_get_size(sectors, cdb, cmd); size = transport_get_size(sectors, cdb, cmd);
cmd->t_task_lba = transport_lba_64(cdb); cmd->t_task_lba = transport_lba_64(cdb);
cmd->t_tasks_fua = (cdb[1] & 0x8); if (cdb[1] & 0x8)
cmd->se_cmd_flags |= SCF_FUA;
cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB; cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
break; break;
case XDWRITEREAD_10: case XDWRITEREAD_10:
...@@ -2614,7 +2617,8 @@ static int transport_generic_cmd_sequencer( ...@@ -2614,7 +2617,8 @@ static int transport_generic_cmd_sequencer(
* Setup BIDI XOR callback to be run after I/O completion. * Setup BIDI XOR callback to be run after I/O completion.
*/ */
cmd->transport_complete_callback = &transport_xor_callback; cmd->transport_complete_callback = &transport_xor_callback;
cmd->t_tasks_fua = (cdb[1] & 0x8); if (cdb[1] & 0x8)
cmd->se_cmd_flags |= SCF_FUA;
break; break;
case VARIABLE_LENGTH_CMD: case VARIABLE_LENGTH_CMD:
service_action = get_unaligned_be16(&cdb[8]); service_action = get_unaligned_be16(&cdb[8]);
...@@ -2642,7 +2646,8 @@ static int transport_generic_cmd_sequencer( ...@@ -2642,7 +2646,8 @@ static int transport_generic_cmd_sequencer(
* completion. * completion.
*/ */
cmd->transport_complete_callback = &transport_xor_callback; cmd->transport_complete_callback = &transport_xor_callback;
cmd->t_tasks_fua = (cdb[10] & 0x8); if (cdb[1] & 0x8)
cmd->se_cmd_flags |= SCF_FUA;
break; break;
case WRITE_SAME_32: case WRITE_SAME_32:
sectors = transport_get_sectors_32(cdb, cmd, &sector_ret); sectors = transport_get_sectors_32(cdb, cmd, &sector_ret);
......
...@@ -103,6 +103,7 @@ enum se_cmd_flags_table { ...@@ -103,6 +103,7 @@ enum se_cmd_flags_table {
SCF_SCSI_NON_DATA_CDB = 0x00000040, SCF_SCSI_NON_DATA_CDB = 0x00000040,
SCF_SCSI_CDB_EXCEPTION = 0x00000080, SCF_SCSI_CDB_EXCEPTION = 0x00000080,
SCF_SCSI_RESERVATION_CONFLICT = 0x00000100, SCF_SCSI_RESERVATION_CONFLICT = 0x00000100,
SCF_FUA = 0x00000200,
SCF_SE_LUN_CMD = 0x00000800, SCF_SE_LUN_CMD = 0x00000800,
SCF_SE_ALLOW_EOO = 0x00001000, SCF_SE_ALLOW_EOO = 0x00001000,
SCF_SENT_CHECK_CONDITION = 0x00004000, SCF_SENT_CHECK_CONDITION = 0x00004000,
...@@ -458,7 +459,6 @@ struct se_cmd { ...@@ -458,7 +459,6 @@ struct se_cmd {
unsigned char __t_task_cdb[TCM_MAX_COMMAND_SIZE]; unsigned char __t_task_cdb[TCM_MAX_COMMAND_SIZE];
unsigned long long t_task_lba; unsigned long long t_task_lba;
int t_tasks_failed; int t_tasks_failed;
int t_tasks_fua;
bool t_tasks_bidi; bool t_tasks_bidi;
u32 t_tasks_sg_chained_no; u32 t_tasks_sg_chained_no;
atomic_t t_fe_count; atomic_t t_fe_count;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册