IB/srp: Keep processing commands during host removal
authorBart Van Assche <bvanassche@acm.org>
Thu, 19 Apr 2012 14:42:54 +0000 (14:42 +0000)
committerRoland Dreier <roland@purestorage.com>
Sat, 1 Dec 2012 01:40:30 +0000 (17:40 -0800)
Some SCSI upper layer drivers, e.g. sd, issue SCSI commands from
inside scsi_remove_host() (see the sd_shutdown() call in sd_remove()).
Make sure that these commands have a chance to reach the SCSI device.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: David Dillow <dillowda@ornl.gov>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/ulp/srp/ib_srp.c

index a2261995c55073d6d193ea79833955f344ae1f40..9371d582d0dcb0dcf471db447c8bb06735c4cd00 100644 (file)
@@ -1318,13 +1318,6 @@ static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
        unsigned long flags;
        int len;
 
-       if (target->state == SRP_TARGET_DEAD ||
-           target->state == SRP_TARGET_REMOVED) {
-               scmnd->result = DID_BAD_TARGET << 16;
-               scmnd->scsi_done(scmnd);
-               return 0;
-       }
-
        spin_lock_irqsave(&target->lock, flags);
        iu = __srp_get_tx_iu(target, SRP_IU_CMD);
        if (!iu)