|
@@ -68,6 +68,16 @@ static int mmc_queue_thread(void *d)
|
|
|
if (req || mq->mqrq_prev->req) {
|
|
|
set_current_state(TASK_RUNNING);
|
|
|
mq->issue_fn(mq, req);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Current request becomes previous request
|
|
|
+ * and vice versa.
|
|
|
+ */
|
|
|
+ mq->mqrq_prev->brq.mrq.data = NULL;
|
|
|
+ mq->mqrq_prev->req = NULL;
|
|
|
+ tmp = mq->mqrq_prev;
|
|
|
+ mq->mqrq_prev = mq->mqrq_cur;
|
|
|
+ mq->mqrq_cur = tmp;
|
|
|
} else {
|
|
|
if (kthread_should_stop()) {
|
|
|
set_current_state(TASK_RUNNING);
|
|
@@ -77,13 +87,6 @@ static int mmc_queue_thread(void *d)
|
|
|
schedule();
|
|
|
down(&mq->thread_sem);
|
|
|
}
|
|
|
-
|
|
|
- /* Current request becomes previous request and vice versa. */
|
|
|
- mq->mqrq_prev->brq.mrq.data = NULL;
|
|
|
- mq->mqrq_prev->req = NULL;
|
|
|
- tmp = mq->mqrq_prev;
|
|
|
- mq->mqrq_prev = mq->mqrq_cur;
|
|
|
- mq->mqrq_cur = tmp;
|
|
|
} while (1);
|
|
|
up(&mq->thread_sem);
|
|
|
|