• Bart Van Assche's avatar
    IB/srp: Avoid duplicate devices from LUN scan · fd1b6c4a
    Bart Van Assche authored
    SCSI scanning of a channel:id:lun triplet in Linux works as follows
    (function scsi_scan_target() in drivers/scsi/scsi_scan.c):
    
    - If lun == SCAN_WILD_CARD, send a REPORT LUNS command to the target
      and process the result.
    
    - If lun != SCAN_WILD_CARD, send an INQUIRY command to the LUN
      corresponding to the specified channel:id:lun triplet to verify
      whether the LUN exists.
    
    So a SCSI driver must either take the channel and target id values in
    account in its quecommand() function or it should declare that it only
    supports one channel and one target id.
    
    Currently the ib_srp driver does neither.  As a result scanning the
    SCSI bus via e.g. rescan-scsi-bus.sh causes many duplicate SCSI
    devices to be created. For each 0:0:L device, several duplicates are
    created with the same LUN number and with (C:I) != (0:0). Fix this by
    declaring that the ib_srp driver only supports one channel and one
    target id.
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Cc: <stable@kernel.org>
    Acked-by: default avatarDavid Dillow <dillowda@ornl.gov>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    fd1b6c4a
ib_srp.c 65.3 KB