From 0e6414624ecfd4d3def3bdcd9a6092fd9a7177be Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 20 Jul 2010 19:44:39 +0000 Subject: [PATCH] Follow-up for r1845. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1846 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- srpt/src/ib_srpt.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/srpt/src/ib_srpt.c b/srpt/src/ib_srpt.c index d709a7cd7..20fc96f8d 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -1143,12 +1143,16 @@ static void srpt_abort_scst_cmd(struct srpt_ioctx *ioctx, state = srpt_test_and_set_cmd_state(ioctx, SRPT_STATE_NEED_DATA, SRPT_STATE_DATA_IN); if (state != SRPT_STATE_NEED_DATA) { - state = srpt_test_and_set_cmd_state(ioctx, - SRPT_STATE_CMD_RSP_SENT, SRPT_STATE_DONE); - if (state != SRPT_STATE_CMD_RSP_SENT) + state = srpt_test_and_set_cmd_state(ioctx, SRPT_STATE_DATA_IN, + SRPT_STATE_DONE); + if (state != SRPT_STATE_DATA_IN) { state = srpt_test_and_set_cmd_state(ioctx, + SRPT_STATE_CMD_RSP_SENT, SRPT_STATE_DONE); + if (state != SRPT_STATE_CMD_RSP_SENT) + state = srpt_test_and_set_cmd_state(ioctx, SRPT_STATE_MGMT_RSP_SENT, SRPT_STATE_DONE); + } } if (state == SRPT_STATE_DONE) goto out; @@ -1177,8 +1181,6 @@ static void srpt_abort_scst_cmd(struct srpt_ioctx *ioctx, * SCST command abort flag has been set after the RDMA read * started and before srpt_xmit_response() has been invoked. */ - scst_rx_data(scmnd, SCST_RX_STATUS_ERROR, context); - break; case SRPT_STATE_CMD_RSP_SENT: /* * SRP_RSP sending failed or the SRP_RSP send completion has @@ -3012,9 +3014,7 @@ static int srpt_xmit_response(struct scst_cmd *scmnd) BUG_ON(!ch); if (unlikely(scst_cmd_aborted(scmnd))) { - WARN_ON(ioctx->mapped_sg_count); - srpt_set_cmd_state(ioctx, SRPT_STATE_DONE); - scst_set_delivery_status(scmnd, SCST_CMD_DELIVERY_ABORTED); + srpt_abort_scst_cmd(ioctx, srpt_context); ret = SCST_TGT_RES_SUCCESS; goto out; }