]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: RDMA/srpt: Fix handling of command / TMF submission failure
authorBart Van Assche <bvanassche@acm.org>
Fri, 25 Jan 2019 18:34:48 +0000 (10:34 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 Feb 2019 02:29:45 +0000 (21:29 -0500)
If submitting an SRP IU to the target core fails, send the SCSI response
"BUSY" to the initiator instead of not sending any response.

Reviewed-by: Hannes Reinecke <hare@suse.com>
Cc: Doug Ledford <dledford@redhat.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Nicholas Bellinger <nab@linux-iscsi.org>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/infiniband/ulp/srpt/ib_srpt.c

index 8cee8c6c6be9afbc827ef940d6fab94ecab466bf..4fc901d1c0c1fafa316cca8e7e6e17b20e7e74b5 100644 (file)
@@ -1505,7 +1505,7 @@ static void srpt_handle_cmd(struct srpt_rdma_ch *ch,
                        pr_err("0x%llx: parsing SRP descriptor table failed.\n",
                               srp_cmd->tag);
                }
-               goto release_ioctx;
+               goto busy;
        }
 
        rc = target_submit_cmd_map_sgls(cmd, ch->sess, srp_cmd->cdb,
@@ -1516,13 +1516,12 @@ static void srpt_handle_cmd(struct srpt_rdma_ch *ch,
        if (rc != 0) {
                pr_debug("target_submit_cmd() returned %d for tag %#llx\n", rc,
                         srp_cmd->tag);
-               goto release_ioctx;
+               goto busy;
        }
        return;
 
-release_ioctx:
-       send_ioctx->state = SRPT_STATE_DONE;
-       srpt_release_cmd(cmd);
+busy:
+       target_send_busy(cmd);
 }
 
 static int srp_tmr_to_tcm(int fn)