scsi: target: transport should handle st FM/EOM/ILI reads
When a tape drive is exported via LIO using the pscsi module, a read that requests more bytes per block than the tape can supply returns an empty buffer. This is because the pscsi pass-through target module sees the "ILI" illegal length bit set and thinks there is no reason to return the data. This is a long-standing transport issue, since it assumes that no data need be returned under a check condition, which isn't always the case for tape. Add in a check for tape reads with the ILI, EOM, or FM bits set, with a sense code of NO_SENSE, treating such cases as if the read succeeded. The layered tape driver then "does the right thing" when it gets such a response. Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com> Signed-off-by: Lee Duncan <lduncan@suse.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
51b910c3c7
commit
bd81372065
@@ -143,6 +143,7 @@ enum se_cmd_flags_table {
|
||||
SCF_ACK_KREF = 0x00400000,
|
||||
SCF_USE_CPUID = 0x00800000,
|
||||
SCF_TASK_ATTR_SET = 0x01000000,
|
||||
SCF_TREAT_READ_AS_NORMAL = 0x02000000,
|
||||
};
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user