|
@@ -142,8 +142,6 @@ static inline void mmc_blk_clear_packed(struct mmc_queue_req *mqrq)
|
|
|
{
|
|
|
struct mmc_packed *packed = mqrq->packed;
|
|
|
|
|
|
- BUG_ON(!packed);
|
|
|
-
|
|
|
mqrq->cmd_type = MMC_PACKED_NONE;
|
|
|
packed->nr_entries = MMC_PACKED_NR_ZERO;
|
|
|
packed->idx_failure = MMC_PACKED_NR_IDX;
|
|
@@ -1443,8 +1441,6 @@ static int mmc_blk_packed_err_check(struct mmc_card *card,
|
|
|
int err, check, status;
|
|
|
u8 *ext_csd;
|
|
|
|
|
|
- BUG_ON(!packed);
|
|
|
-
|
|
|
packed->retries--;
|
|
|
check = mmc_blk_err_check(card, areq);
|
|
|
err = get_card_status(card, &status, 0);
|
|
@@ -1673,6 +1669,18 @@ static u8 mmc_blk_prep_packed_list(struct mmc_queue *mq, struct request *req)
|
|
|
u8 max_packed_rw = 0;
|
|
|
u8 reqs = 0;
|
|
|
|
|
|
+ /*
|
|
|
+ * We don't need to check packed for any further
|
|
|
+ * operation of packed stuff as we set MMC_PACKED_NONE
|
|
|
+ * and return zero for reqs if geting null packed. Also
|
|
|
+ * we clean the flag of MMC_BLK_PACKED_CMD to avoid doing
|
|
|
+ * it again when removing blk req.
|
|
|
+ */
|
|
|
+ if (!mqrq->packed) {
|
|
|
+ md->flags &= (~MMC_BLK_PACKED_CMD);
|
|
|
+ goto no_packed;
|
|
|
+ }
|
|
|
+
|
|
|
if (!(md->flags & MMC_BLK_PACKED_CMD))
|
|
|
goto no_packed;
|
|
|
|
|
@@ -1782,8 +1790,6 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
|
|
|
u8 hdr_blocks;
|
|
|
u8 i = 1;
|
|
|
|
|
|
- BUG_ON(!packed);
|
|
|
-
|
|
|
mqrq->cmd_type = MMC_PACKED_WRITE;
|
|
|
packed->blocks = 0;
|
|
|
packed->idx_failure = MMC_PACKED_NR_IDX;
|
|
@@ -1887,8 +1893,6 @@ static int mmc_blk_end_packed_req(struct mmc_queue_req *mq_rq)
|
|
|
int idx = packed->idx_failure, i = 0;
|
|
|
int ret = 0;
|
|
|
|
|
|
- BUG_ON(!packed);
|
|
|
-
|
|
|
while (!list_empty(&packed->list)) {
|
|
|
prq = list_entry_rq(packed->list.next);
|
|
|
if (idx == i) {
|
|
@@ -1917,8 +1921,6 @@ static void mmc_blk_abort_packed_req(struct mmc_queue_req *mq_rq)
|
|
|
struct request *prq;
|
|
|
struct mmc_packed *packed = mq_rq->packed;
|
|
|
|
|
|
- BUG_ON(!packed);
|
|
|
-
|
|
|
while (!list_empty(&packed->list)) {
|
|
|
prq = list_entry_rq(packed->list.next);
|
|
|
list_del_init(&prq->queuelist);
|
|
@@ -1935,8 +1937,6 @@ static void mmc_blk_revert_packed_req(struct mmc_queue *mq,
|
|
|
struct request_queue *q = mq->queue;
|
|
|
struct mmc_packed *packed = mq_rq->packed;
|
|
|
|
|
|
- BUG_ON(!packed);
|
|
|
-
|
|
|
while (!list_empty(&packed->list)) {
|
|
|
prq = list_entry_rq(packed->list.prev);
|
|
|
if (prq->queuelist.prev != &packed->list) {
|