mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-20 14:16:31 +00:00
ib_srpt: Convert srpt_xfer_data() return value
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6103 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
+17
-11
@@ -3433,7 +3433,7 @@ out:
|
||||
/**
|
||||
* srpt_xfer_data() - Start data transfer from initiator to target.
|
||||
*
|
||||
* Returns an SCST_TGT_RES_... status code.
|
||||
* Returns 0, -EAGAIN or -EIO.
|
||||
*
|
||||
* Note: Must not block.
|
||||
*/
|
||||
@@ -3463,14 +3463,14 @@ static int srpt_xfer_data(struct srpt_rdma_ch *ch,
|
||||
in_irq() ? SCST_CONTEXT_TASKLET :
|
||||
in_softirq() ? SCST_CONTEXT_DIRECT_ATOMIC :
|
||||
SCST_CONTEXT_DIRECT);
|
||||
ret = SCST_TGT_RES_SUCCESS;
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = srpt_map_sg_to_ib_sge(ch, ioctx, cmd);
|
||||
if (ret) {
|
||||
pr_err("%s srpt_map_sg_to_ib_sge() ret=%d\n", __func__, ret);
|
||||
ret = SCST_TGT_RES_QUEUE_FULL;
|
||||
ret = -EAGAIN;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -3478,15 +3478,15 @@ static int srpt_xfer_data(struct srpt_rdma_ch *ch,
|
||||
if (ret) {
|
||||
if (ret == -EAGAIN || ret == -ENOMEM) {
|
||||
pr_info("%s: queue full -- ret=%d\n", __func__, ret);
|
||||
ret = SCST_TGT_RES_QUEUE_FULL;
|
||||
ret = -EAGAIN;
|
||||
} else {
|
||||
pr_err("%s: fatal error -- ret=%d\n", __func__, ret);
|
||||
ret = SCST_TGT_RES_FATAL_ERROR;
|
||||
ret = -EIO;
|
||||
}
|
||||
goto out_unmap;
|
||||
}
|
||||
|
||||
ret = SCST_TGT_RES_SUCCESS;
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
return ret;
|
||||
@@ -3541,17 +3541,23 @@ static void srpt_pending_cmd_timeout(struct scst_cmd *cmd)
|
||||
*/
|
||||
static int srpt_rdy_to_xfer(struct scst_cmd *cmd)
|
||||
{
|
||||
struct srpt_send_ioctx *ioctx;
|
||||
struct srpt_send_ioctx *ioctx = scst_cmd_get_tgt_priv(cmd);
|
||||
enum srpt_command_state prev_cmd_state;
|
||||
int ret;
|
||||
|
||||
ioctx = scst_cmd_get_tgt_priv(cmd);
|
||||
prev_cmd_state = srpt_set_cmd_state(ioctx, SRPT_STATE_NEED_DATA);
|
||||
ret = srpt_xfer_data(ioctx->ch, ioctx);
|
||||
if (unlikely(ret != SCST_TGT_RES_SUCCESS))
|
||||
srpt_set_cmd_state(ioctx, prev_cmd_state);
|
||||
|
||||
return ret;
|
||||
switch (ret) {
|
||||
case 0:
|
||||
return SCST_TGT_RES_SUCCESS;
|
||||
case -EAGAIN:
|
||||
srpt_set_cmd_state(ioctx, prev_cmd_state);
|
||||
return SCST_TGT_RES_QUEUE_FULL;
|
||||
default:
|
||||
srpt_set_cmd_state(ioctx, prev_cmd_state);
|
||||
return SCST_TGT_RES_FATAL_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user