• Bart Van Assche's avatar
    scsi: Make __scsi_remove_device go straight from BLOCKED to DEL · 255ee932
    Bart Van Assche authored
    If a device is blocked, make __scsi_remove_device() cause it to
    transition to the DEL state. This means that all the commands issued in
    .shutdown() will error in the mid-layer, thus making the removal proceed
    without being stopped.
    
    This patch is a slightly modified version of a patch from James
    Bottomley. This patch avoids that the following lockup occurs:
    
    Call Trace:
     schedule+0x35/0x80
     schedule_timeout+0x237/0x2d0
     io_schedule_timeout+0xa6/0x110
     wait_for_completion_io+0xa3/0x110
     blk_execute_rq+0xdf/0x120
     scsi_execute+0xce/0x150 [scsi_mod]
     scsi_execute_req_flags+0x8f/0xf0 [scsi_mod]
     sd_sync_cache+0xa9/0x190 [sd_mod]
     sd_shutdown+0x6a/0x100 [sd_mod]
     sd_remove+0x64/0xc0 [sd_mod]
     __device_release_driver+0x8d/0x120
     device_release_driver+0x1e/0x30
     bus_remove_device+0xf9/0x170
     device_del+0x127/0x240
     __scsi_remove_device+0xc1/0xd0 [scsi_mod]
     scsi_forget_host+0x57/0x60 [scsi_mod]
     scsi_remove_host+0x72/0x110 [scsi_mod]
     srp_remove_work+0x8b/0x200 [ib_srp]
    Reported-by: default avatarIsrael Rukshin <israelr@mellanox.com>
    Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Israel Rukshin <israelr@mellanox.com>
    Cc: Max Gurtovoy <maxg@mellanox.com>
    Cc: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    255ee932
scsi_lib.c 88.2 KB