Loading drivers/mmc/core/block.c +12 −5 Original line number Original line Diff line number Diff line Loading @@ -2633,11 +2633,11 @@ static struct mmc_cmdq_req *mmc_blk_cmdq_rw_prep( static void mmc_blk_cmdq_requeue_rw_rq(struct mmc_queue *mq, static void mmc_blk_cmdq_requeue_rw_rq(struct mmc_queue *mq, struct request *req) struct request *req) { { struct mmc_card *card = mq->card; struct request_queue *q = req->q; struct mmc_host *host = card->host; blk_requeue_request(req->q, req); spin_lock_irq(q->queue_lock); mmc_put_card(host->card); blk_requeue_request(q, req); spin_unlock_irq(q->queue_lock); } } static int mmc_blk_cmdq_issue_rw_rq(struct mmc_queue *mq, struct request *req) static int mmc_blk_cmdq_issue_rw_rq(struct mmc_queue *mq, struct request *req) Loading Loading @@ -3543,9 +3543,16 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req) * If issuing of the request fails with eitehr EBUSY or * If issuing of the request fails with eitehr EBUSY or * EAGAIN error, re-queue the request. * EAGAIN error, re-queue the request. * This case would occur with ICE calls. * This case would occur with ICE calls. * For request which gets completed successfully or * errored out, we release host lock in completion or * error handling softirq context. But here the request * is neither completed nor erred-out, so release the * host lock explicitly. */ */ if (ret == -EBUSY || ret == -EAGAIN) if (ret == -EBUSY || ret == -EAGAIN) { mmc_blk_cmdq_requeue_rw_rq(mq, req); mmc_blk_cmdq_requeue_rw_rq(mq, req); mmc_put_card(host->card); } } } } } Loading Loading
drivers/mmc/core/block.c +12 −5 Original line number Original line Diff line number Diff line Loading @@ -2633,11 +2633,11 @@ static struct mmc_cmdq_req *mmc_blk_cmdq_rw_prep( static void mmc_blk_cmdq_requeue_rw_rq(struct mmc_queue *mq, static void mmc_blk_cmdq_requeue_rw_rq(struct mmc_queue *mq, struct request *req) struct request *req) { { struct mmc_card *card = mq->card; struct request_queue *q = req->q; struct mmc_host *host = card->host; blk_requeue_request(req->q, req); spin_lock_irq(q->queue_lock); mmc_put_card(host->card); blk_requeue_request(q, req); spin_unlock_irq(q->queue_lock); } } static int mmc_blk_cmdq_issue_rw_rq(struct mmc_queue *mq, struct request *req) static int mmc_blk_cmdq_issue_rw_rq(struct mmc_queue *mq, struct request *req) Loading Loading @@ -3543,9 +3543,16 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req) * If issuing of the request fails with eitehr EBUSY or * If issuing of the request fails with eitehr EBUSY or * EAGAIN error, re-queue the request. * EAGAIN error, re-queue the request. * This case would occur with ICE calls. * This case would occur with ICE calls. * For request which gets completed successfully or * errored out, we release host lock in completion or * error handling softirq context. But here the request * is neither completed nor erred-out, so release the * host lock explicitly. */ */ if (ret == -EBUSY || ret == -EAGAIN) if (ret == -EBUSY || ret == -EAGAIN) { mmc_blk_cmdq_requeue_rw_rq(mq, req); mmc_blk_cmdq_requeue_rw_rq(mq, req); mmc_put_card(host->card); } } } } } Loading