mmc: core: Move update of is_waiting_last_req flag
Set the 'is_waiting_last_req' flag as part of mmc_blk_issue_req()instead
of mmc_queue_thread(), because the flag is relevant only for data requests.
Now adding a new control requests will not demand change in the logic of
turning on the flag.
Change-Id: I20784188b23840fd6f3e9ed27be5612a6937005b
Signed-off-by: Konstantin Dorfman <kdorfman@codeaurora.org>
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 16815ca..f879fd2 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -2122,6 +2122,8 @@
int ret;
struct mmc_blk_data *md = mq->data;
struct mmc_card *card = md->queue.card;
+ struct mmc_host *host = card->host;
+ unsigned long flags;
#ifdef CONFIG_MMC_BLOCK_DEFERRED_RESUME
if (mmc_bus_needs_resume(card->host)) {
@@ -2169,6 +2171,11 @@
mmc_blk_issue_rw_rq(mq, NULL);
ret = mmc_blk_issue_flush(mq, req);
} else {
+ if (!req && host->areq) {
+ spin_lock_irqsave(&host->context_info.lock, flags);
+ host->context_info.is_waiting_last_req = true;
+ spin_unlock_irqrestore(&host->context_info.lock, flags);
+ }
ret = mmc_blk_issue_rw_rq(mq, req);
}
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index ad40660..9babeab 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -78,14 +78,6 @@
set_current_state(TASK_INTERRUPTIBLE);
req = blk_fetch_request(q);
mq->mqrq_cur->req = req;
- if (!req && mq->mqrq_prev->req &&
- !(mq->mqrq_prev->req->cmd_flags & REQ_SANITIZE) &&
- !(mq->mqrq_prev->req->cmd_flags & REQ_FLUSH) &&
- !(mq->mqrq_prev->req->cmd_flags & REQ_DISCARD)) {
- card->host->context_info.is_waiting_last_req = true;
- if (stats && stats->enabled)
- stats->null_fetched++;
- }
spin_unlock_irq(q->queue_lock);
if (req || mq->mqrq_prev->req) {