break;
        }
        mq_rq->drv_op_result = ret;
-       blk_end_request_all(req, ret);
+       blk_end_request_all(req, ret ? BLK_STS_IOERR : BLK_STS_OK);
 }
 
 static void mmc_blk_issue_discard_rq(struct mmc_queue *mq, struct request *req)
                if (err)
                        req_pending = old_req_pending;
                else
-                       req_pending = blk_end_request(req, 0, blocks << 9);
+                       req_pending = blk_end_request(req, BLK_STS_OK, blocks << 9);
        } else {
-               req_pending = blk_end_request(req, 0, brq->data.bytes_xfered);
+               req_pending = blk_end_request(req, BLK_STS_OK, brq->data.bytes_xfered);
        }
        return req_pending;
 }