• bstroesser@ts.fujitsu.com's avatar
    scsi: target: tcmu: add read length support · 6c3796d1
    bstroesser@ts.fujitsu.com authored
    Generally target core and TCMUser seem to work fine for tape devices and
    media changers.  But there is at least one situation where TCMUser is not
    able to support sequential access device emulation correctly.
    
    The situation is when an initiator sends a SCSI READ CDB with a length that
    is greater than the length of the tape block to read. We can distinguish
    two subcases:
    
    A) The initiator sent the READ CDB with the SILI bit being set.
    
       In this case the sequential access device has to transfer the data from
       the tape block (only the length of the tape block) and transmit a good
       status.  The current interface between TCMUser and the userspace does
       not support reduction of the read data size by the userspace program.
    
       The patch below fixes this subcase by allowing the userspace program to
       specify a reduced data size in read direction.
    
    B) The initiator sent the READ CDB with the SILI bit not being set.
    
       In this case the sequential access device has to transfer the data from
       the tape block as in A), but additionally has to transmit CHECK
       CONDITION with the ILI bit set and NO SENSE in the sensebytes. The
       information field in the sensebytes must contain the residual count.
    
       With the below patch a user space program can specify the real read data
       length and appropriate sensebytes.  TCMUser then uses the se_cmd flag
       SCF_TREAT_READ_AS_NORMAL, to force target core to transmit the real data
       size and the sensebytes.  Note: the flag SCF_TREAT_READ_AS_NORMAL is
       introduced by Lee Duncan's patch "[PATCH v4] target: transport should
       handle st FM/EOM/ILI reads" from Tue, 15 May 2018 18:25:24 -0700.
    Signed-off-by: default avatarBodo Stroesser <bstroesser@ts.fujitsu.com>
    Acked-by: default avatarMike Christie <mchristi@redhat.com>
    Reviewed-by: default avatarLee Duncan <lduncan@suse.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    6c3796d1
target_core_user.c 66.1 KB