Hi, On Fri, Sep 28 2012, Seungwon Jeon wrote: > In case both 'req' and 'mq->mqrq_prev->req' are null, there is no request > to be processed. That means there is no need to switch buffer. > Switching buffer is required only after finishing 'issue_fn'. > > Signed-off-by: Seungwon Jeon <tgih.jun@xxxxxxxxxxx> > --- > drivers/mmc/card/queue.c | 17 ++++++++++------- > 1 files changed, 10 insertions(+), 7 deletions(-) > > diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c > index e360a97..fadf52e 100644 > --- a/drivers/mmc/card/queue.c > +++ b/drivers/mmc/card/queue.c > @@ -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); Thanks, pushed to mmc-next for 3.8. - Chris. -- Chris Ball <cjb@xxxxxxxxxx> <http://printf.net/> One Laptop Per Child -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html