mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-17 17:53:56 +08:00
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/20201203082035.54566-2-a.kovaleva@yadro.com Based-on: https://patchwork.kernel.org/project/target-devel/patch/20170523234854.21452-31-bart.vanassche@sandisk.com/ Based-on-patch-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> Signed-off-by: Konstantin Vinogradov <k.vinogradov@yadro.com> Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
cd96fe600c
commit
eb90e45542
@ -1332,17 +1332,6 @@ target_cmd_size_check(struct se_cmd *cmd, unsigned int size)
|
||||
return TCM_INVALID_CDB_FIELD;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 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
|
||||
|
Loading…
Reference in New Issue
Block a user