rq = mtip_rq_from_tag(dd, tag);
 
-       blk_mq_complete_request(rq, status);
+       cmd->status = status;
+       blk_mq_complete_request(rq, 0);
 }
 
 /*
        if (unlikely(cmd->unaligned))
                up(&dd->port->cmd_slot_unal);
 
-       blk_mq_end_request(rq, rq->errors);
+       blk_mq_end_request(rq, cmd->status);
 }
 
 static void mtip_abort_cmd(struct request *req, void *data,
                                                        bool reserved)
 {
+       struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req);
        struct driver_data *dd = data;
 
        dbg_printk(MTIP_DRV_NAME " Aborting request, tag = %d\n", req->tag);
 
        clear_bit(req->tag, dd->port->cmds_to_issue);
-       req->errors = -EIO;
+       cmd->status = -EIO;
        mtip_softirq_done_fn(req);
 }
 
        if (likely(!ret))
                return BLK_MQ_RQ_QUEUE_OK;
 
-       rq->errors = ret;
        return BLK_MQ_RQ_QUEUE_ERROR;
 }
 
        struct driver_data *dd = (struct driver_data *)data;
        struct mtip_cmd *cmd;
 
-       if (likely(!reserv))
-               blk_mq_complete_request(rq, -ENODEV);
-       else if (test_bit(MTIP_PF_IC_ACTIVE_BIT, &dd->port->flags)) {
+       if (likely(!reserv)) {
+               cmd->status = -ENODEV;
+               blk_mq_complete_request(rq, 0);
+       } else if (test_bit(MTIP_PF_IC_ACTIVE_BIT, &dd->port->flags)) {
 
                cmd = mtip_cmd_from_tag(dd, MTIP_TAG_INTERNAL);
                if (cmd->comp_func)