• Douglas Gilbert's avatar
    scsi: scsi_debug: Improve command duration calculation · a2aede97
    Douglas Gilbert authored
    Previously the code did the work implied by the given SCSI command and
    after that it waited for a timer based on the user specified command
    duration to be exhausted before informing the mid-level that the command
    was complete. For short command durations, the time to complete the work
    implied by the SCSI command could be significant compared to the user
    specified command duration.
    
    For example a WRITE of 128 blocks (say 512 bytes each) on a machine that
    can copy from main memory to main memory at a rate of 10 GB/sec will take
    around 6.4 microseconds to do that copy.  If the user specified a command
    duration of 5 microseconds (ndelay=5000), should the driver do a further
    delay of 5 microseconds after the copy or return immediately because 6.4 >
    5 ?
    
    The action prior to this patch was to always do the timer based
    delay. After this patch, for ndelay values less than 1 millisecond, this
    driver will complete the command immediately.  And in the case where the
    user specified delay was 7 microseconds, a timer delay of 600 nanoseconds
    will be set ((7 - 6.4) * 1000).
    
    Link: https://lore.kernel.org/r/20200421151424.32668-6-dgilbert@interlog.comSigned-off-by: default avatarDouglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    a2aede97
scsi_debug.c 184 KB