target: replace various cmd flags with a transport state
[pandora-kernel.git] / drivers / infiniband / ulp / srpt / ib_srpt.c
index 2b73d43..e1e6b5b 100644 (file)
@@ -1378,7 +1378,9 @@ static int srpt_abort_cmd(struct srpt_send_ioctx *ioctx)
                break;
        case SRPT_STATE_NEED_DATA:
                /* DMA_TO_DEVICE (write) - RDMA read error. */
-               atomic_set(&ioctx->cmd.transport_lun_stop, 1);
+               spin_lock_irqsave(&ioctx->cmd.t_state_lock, flags);
+               ioctx->cmd.transport_state |= CMD_T_LUN_STOP;
+               spin_unlock_irqrestore(&ioctx->cmd.t_state_lock, flags);
                transport_generic_handle_data(&ioctx->cmd);
                break;
        case SRPT_STATE_CMD_RSP_SENT:
@@ -1387,7 +1389,9 @@ static int srpt_abort_cmd(struct srpt_send_ioctx *ioctx)
                 * not been received in time.
                 */
                srpt_unmap_sg_to_ib_sge(ioctx->ch, ioctx);
-               atomic_set(&ioctx->cmd.transport_lun_stop, 1);
+               spin_lock_irqsave(&ioctx->cmd.t_state_lock, flags);
+               ioctx->cmd.transport_state |= CMD_T_LUN_STOP;
+               spin_unlock_irqrestore(&ioctx->cmd.t_state_lock, flags);
                kref_put(&ioctx->kref, srpt_put_send_ioctx_kref);
                break;
        case SRPT_STATE_MGMT_RSP_SENT:
@@ -1494,6 +1498,7 @@ static void srpt_handle_rdma_err_comp(struct srpt_rdma_ch *ch,
 {
        struct se_cmd *cmd;
        enum srpt_command_state state;
+       unsigned long flags;
 
        cmd = &ioctx->cmd;
        state = srpt_get_cmd_state(ioctx);
@@ -1513,7 +1518,9 @@ static void srpt_handle_rdma_err_comp(struct srpt_rdma_ch *ch,
                               __func__, __LINE__, state);
                break;
        case SRPT_RDMA_WRITE_LAST:
-               atomic_set(&ioctx->cmd.transport_lun_stop, 1);
+               spin_lock_irqsave(&ioctx->cmd.t_state_lock, flags);
+               ioctx->cmd.transport_state |= CMD_T_LUN_STOP;
+               spin_unlock_irqrestore(&ioctx->cmd.t_state_lock, flags);
                break;
        default:
                printk(KERN_ERR "%s[%d]: opcode = %u\n", __func__,