COMPARE_AND_WRITE gets its own flags, but it's also a BIDI command. Set the SCF_BIDI flag for it as well. This will let BIDI-handling code just check SCF_BIDI, like in generic_new_cmd, and also apply BIDI code paths that only check SCF_BIDI, like in TCM User, to CAW. Signed-off-by: Andy Grover <agrover@xxxxxxxxxx> --- drivers/target/target_core_sbc.c | 2 +- drivers/target/target_core_transport.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/target/target_core_sbc.c b/drivers/target/target_core_sbc.c index 8855781..aa5e2ab 100644 --- a/drivers/target/target_core_sbc.c +++ b/drivers/target/target_core_sbc.c @@ -953,7 +953,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops) size = 2 * sbc_get_size(cmd, sectors); cmd->t_task_lba = get_unaligned_be64(&cdb[2]); cmd->t_task_nolb = sectors; - cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB | SCF_COMPARE_AND_WRITE; + cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB | SCF_COMPARE_AND_WRITE | SCF_BIDI; cmd->execute_rw = ops->execute_rw; cmd->execute_cmd = sbc_compare_and_write; cmd->transport_complete_callback = compare_and_write_callback; diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 3fe5cb2..980361d 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -2353,8 +2353,7 @@ transport_generic_new_cmd(struct se_cmd *cmd) if (!(cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) && cmd->data_length) { - if ((cmd->se_cmd_flags & SCF_BIDI) || - (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE)) { + if (cmd->se_cmd_flags & SCF_BIDI) { u32 bidi_length; if (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html