• Bart Van Assche's avatar
    scsi: srp_transport: Move queuecommand() wait code to SCSI core · 669f0441
    Bart Van Assche authored
    Additionally, rename srp_wait_for_queuecommand() into
    scsi_wait_for_queuecommand() and add a comment about the queuecommand()
    call from scsi_send_eh_cmnd().
    
    Note: this patch changes scsi_internal_device_block from a function that
    did not sleep into a function that may sleep. This is fine for all
    callers of this function:
    
    * scsi_internal_device_block() is called from the mpt3sas device while
      that driver holds the ioc->dm_cmds.mutex. This means that the mpt3sas
      driver calls this function from thread context.
    * scsi_target_block() is called by __iscsi_block_session() from
      kernel thread context and with IRQs enabled.
    * The SRP transport code also calls scsi_target_block() from kernel
      thread context while sleeping is allowed.
    * The snic driver also calls scsi_target_block() from a context from
      which sleeping is allowed. The scsi_target_block() call namely occurs
      immediately after a scsi_flush_work() call.
    
    [mkp: s/shost/sdev/]
    Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
    Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    Cc: James Bottomley <jejb@linux.vnet.ibm.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Doug Ledford <dledford@redhat.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    669f0441
scsi_lib.c 83 KB