aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c7
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 8a7eb9f98a0c..7ccf3284dda3 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -734,6 +734,7 @@ static int srp_reconnect_target(struct srp_target_port *target)
734 734
735 scsi_target_unblock(&shost->shost_gendev, ret == 0 ? SDEV_RUNNING : 735 scsi_target_unblock(&shost->shost_gendev, ret == 0 ? SDEV_RUNNING :
736 SDEV_TRANSPORT_OFFLINE); 736 SDEV_TRANSPORT_OFFLINE);
737 target->transport_offline = !!ret;
737 738
738 if (ret) 739 if (ret)
739 goto err; 740 goto err;
@@ -1353,6 +1354,12 @@ static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
1353 unsigned long flags; 1354 unsigned long flags;
1354 int len; 1355 int len;
1355 1356
1357 if (unlikely(target->transport_offline)) {
1358 scmnd->result = DID_NO_CONNECT << 16;
1359 scmnd->scsi_done(scmnd);
1360 return 0;
1361 }
1362
1356 spin_lock_irqsave(&target->lock, flags); 1363 spin_lock_irqsave(&target->lock, flags);
1357 iu = __srp_get_tx_iu(target, SRP_IU_CMD); 1364 iu = __srp_get_tx_iu(target, SRP_IU_CMD);
1358 if (!iu) 1365 if (!iu)
diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
index de2d0b3c0bfe..66fbedda4571 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.h
+++ b/drivers/infiniband/ulp/srp/ib_srp.h
@@ -140,6 +140,7 @@ struct srp_target_port {
140 unsigned int cmd_sg_cnt; 140 unsigned int cmd_sg_cnt;
141 unsigned int indirect_size; 141 unsigned int indirect_size;
142 bool allow_ext_sg; 142 bool allow_ext_sg;
143 bool transport_offline;
143 144
144 /* Everything above this point is used in the hot path of 145 /* Everything above this point is used in the hot path of
145 * command processing. Try to keep them packed into cachelines. 146 * command processing. Try to keep them packed into cachelines.