linux/drivers/target
Bodo Stroesser c68a56736c scsi: target: loopback: Fix READ with data and sensebytes
We use tcm_loop with tape emulations running on tcmu.

In case application reads a short tape block with a longer READ, or a long
tape block with a short READ, according to SCC spec data has to be
tranferred _and_ sensebytes with ILI set and information field containing
the residual count. Similar problem also exists when using fixed block
size in READ.

Up to now tcm_loop is not prepared to handle sensebytes if input data is
provided, as in tcm_loop_queue_data_in() it only sets SAM_STAT_GOOD and, if
necessary, the residual count.

To fix the bug, the same handling for sensebytes as present in
tcm_loop_queue_status() must be done in tcm_loop_queue_data_in() also.

After adding this handling, the two function now are nearly identical, so I
created a single function with two wrappers.

Link: https://lore.kernel.org/r/20200428182617.32726-1-bstroesser@ts.fujitsu.com
Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-05-11 22:20:19 -04:00
..
iscsi scsi: target: iscsi: Remove the iscsi_data_count structure 2020-04-24 18:21:15 -04:00
loopback scsi: target: loopback: Fix READ with data and sensebytes 2020-05-11 22:20:19 -04:00
sbp
tcm_fc scsi: libfc: remove unnecessary assertion on ep variable 2019-12-19 22:08:55 -05:00
Kconfig
Makefile
target_core_alua.c scsi: target: Make transport_flags per device 2020-05-07 22:39:21 -04:00
target_core_alua.h
target_core_configfs.c scsi: target: tcmu: Make pgr_support and alua_support attributes writable 2020-05-07 22:39:22 -04:00
target_core_device.c scsi: target: Make transport_flags per device 2020-05-07 22:39:21 -04:00
target_core_fabric_configfs.c
target_core_fabric_lib.c scsi: target: core: Fix a pr_debug() argument 2019-11-19 21:41:11 -05:00
target_core_file.c
target_core_file.h
target_core_hba.c
target_core_iblock.c scsi: target/iblock: Fix protection error with blocks greater than 512B 2019-12-19 18:50:34 -05:00
target_core_iblock.h
target_core_internal.h
target_core_pr.c scsi: target: Make transport_flags per device 2020-05-07 22:39:21 -04:00
target_core_pr.h
target_core_pscsi.c scsi: target: Make transport_flags per device 2020-05-07 22:39:21 -04:00
target_core_pscsi.h
target_core_rd.c
target_core_rd.h
target_core_sbc.c
target_core_spc.c scsi: target: use an enum to track emulate_ua_intlck_ctrl 2020-02-21 17:37:16 -05:00
target_core_stat.c
target_core_tmr.c scsi: target: convert boolean se_dev_attrib types to bool 2020-02-21 17:37:14 -05:00
target_core_tpg.c scsi: target: Make transport_flags per device 2020-05-07 22:39:21 -04:00
target_core_transport.c scsi: target: Make transport_flags per device 2020-05-07 22:39:21 -04:00
target_core_ua.c scsi: target: use an enum to track emulate_ua_intlck_ctrl 2020-02-21 17:37:16 -05:00
target_core_ua.h
target_core_user.c scsi: target: tcmu: Make pgr_support and alua_support attributes writable 2020-05-07 22:39:22 -04:00
target_core_xcopy.c scsi: target: use the stack for XCOPY passthrough cmds 2020-03-29 18:10:59 -04:00
target_core_xcopy.h scsi: target: use the stack for XCOPY passthrough cmds 2020-03-29 18:10:59 -04:00