diff options
| author | Subhash Jadavani <subhashj@codeaurora.org> | 2015-08-12 17:53:21 -0700 |
|---|---|---|
| committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-31 15:27:38 -0700 |
| commit | 38c20819fce7eb22a3d0f560049fc8f5c0292bf7 (patch) | |
| tree | 9ecf21631ca44ff68e1e6eb0174c5eb3564350a7 /drivers/mmc/card/queue.h | |
| parent | b78e1b402589663b584111e24b6756beccef4797 (diff) | |
mmc: queue: fix the cmdq thread wake up handling
If request has to be requeued (due to any DCMD commmand pending or cmdq
being halted) and if we change the task status to interruptible before
going to sleep then thread may not wakeup again. Note that
blk_requeue_request() doesn't trigger ->request_fn() again to wakeup
the thread.
Fix this issue by making cmdq thread wait for the completion of DCMD
or until the cmdq is unhalted. This change also simplifies the
cmdq thread function.
Change-Id: Iebffc993241e5fadb2962fedc44576566dc66e9c
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
Diffstat (limited to 'drivers/mmc/card/queue.h')
| -rw-r--r-- | drivers/mmc/card/queue.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mmc/card/queue.h b/drivers/mmc/card/queue.h index e13f3ceb0cc2..e67d0546346a 100644 --- a/drivers/mmc/card/queue.h +++ b/drivers/mmc/card/queue.h @@ -73,6 +73,7 @@ struct mmc_queue { struct completion cmdq_shutdown_complete; struct completion cmdq_pending_req_done; + struct request *cmdq_req_peeked; int (*err_check_fn) (struct mmc_card *, struct mmc_async_req *); void (*packed_test_fn) (struct request_queue *, struct mmc_queue_req *); void (*cmdq_shutdown)(struct mmc_queue *); |
