diff options
author | Roman Bolshakov <[email protected]> | 2020-12-03 11:20:33 +0300 |
---|---|---|
committer | Martin K. Petersen <[email protected]> | 2021-01-26 23:12:18 -0500 |
commit | eb90e45542b583c3647e032fba9348a74adfcb59 (patch) | |
tree | c8132462183b76539606f0db15d3028655a0fb91 | |
parent | cd96fe600cc4924d8d0cc6e3161870219c0d2c12 (diff) |
scsi: target: core: Set residuals for 4Kn devices
TCM always fails SBC commands with residuals for 4Kn devices when the
command is processed by sbc_parse_cdb(). That prevents residual signalling
to the transport driver because residual kind and residual amount aren't
set. It also makes residual handling different from 512-byte formatted
devices - if there are residuals 512-byte LUN would proceed with command
execution while 4K-byte LUN would fail.
Link: https://lore.kernel.org/r/[email protected]
Based-on: https://patchwork.kernel.org/project/target-devel/patch/[email protected]/
Based-on-patch-by: Bart Van Assche <[email protected]>
Signed-off-by: Roman Bolshakov <[email protected]>
Signed-off-by: Konstantin Vinogradov <[email protected]>
Signed-off-by: Anastasia Kovaleva <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
-rw-r--r-- | drivers/target/target_core_transport.c | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index d47bfd8b0f87..b58966d4b917 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -1333,17 +1333,6 @@ target_cmd_size_check(struct se_cmd *cmd, unsigned int size) } } /* - * Reject READ_* or WRITE_* with overflow/underflow for - * type SCF_SCSI_DATA_CDB. - */ - if (dev->dev_attrib.block_size != 512) { - pr_err("Failing OVERFLOW/UNDERFLOW for LBA op" - " CDB on non 512-byte sector setup subsystem" - " plugin: %s\n", dev->transport->name); - /* Returns CHECK_CONDITION + INVALID_CDB_FIELD */ - return TCM_INVALID_CDB_FIELD; - } - /* * For the overflow case keep the existing fabric provided * ->data_length. Otherwise for the underflow case, reset * ->data_length to the smaller SCSI expected data transfer |