• Mike Christie's avatar
    scsi: target: Allow userspace to request direct submissions · e2f4ea40
    Mike Christie authored
    This allows userspace to request the fabric drivers do direct submissions
    if they support it. With the new device file, submit_type, users can
    write 0 - 2 to control how commands are submitted to the backend:
    
     0 - TARGET_FABRIC_DEFAULT_SUBMIT - LIO will use the fabric's default
         submission type. This is the default for compat.
    
     1 - TARGET_DIRECT_SUBMIT - LIO will submit the cmd to the backend from the
         calling context if the fabric the cmd was received on supports it,
         else it will use the fabric's default type.
    
     2 - TARGET_QUEUE_SUBMIT - LIO will queue the cmd to the LIO submission
         workqueue which will pass it to the backend.
    
    When using an NVMe drive and vhost-scsi with direct submission we see
    around a 20% improvement in 4K I/Os:
    
    fio jobs        1       2       4       8       10
    --------------------------------------------------
    defer           94K     190K    394K    770K    890K
    direct          128K    252K    488K    950K    -
    
    And when using the queueing mode, we now no longer see issues like where
    the iSCSI tx thread is blocked in the block layer waiting on a tag so it
    can't respond to a nop or perform I/Os for other LUs.
    Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
    Link: https://lore.kernel.org/r/20230928020907.5730-6-michael.christie@oracle.comSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    e2f4ea40
target_core_configfs.c 99.7 KB