Message ID | 00fe01cd9d61$d2f6f180$78e4d480$%jun@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, This is really a micro optimization. Still the patch looks correct. CUR and PREV will have the same values before and after this patch. Before this patch, NULL was assigned to NULL which is not necessary of course. Reviewed-by: Per Forlin <per.forlin@stericsson.com> Thanks, Per On Fri, Sep 28, 2012 at 12:12 PM, Seungwon Jeon <tgih.jun@samsung.com> 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@samsung.com> > --- > 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); > > -- > 1.7.0.4 > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, Tested-by: Johan Rudholm <johan.rudholm@stericsson.com> //Johan 2012/9/28 Per Forlin <per.lkml@gmail.com>: > Hi, > > This is really a micro optimization. Still the patch looks correct. > CUR and PREV will have the same values before and after this patch. > Before this patch, NULL was assigned to NULL which is not necessary of course. > > Reviewed-by: Per Forlin <per.forlin@stericsson.com> > > Thanks, > Per > > On Fri, Sep 28, 2012 at 12:12 PM, Seungwon Jeon <tgih.jun@samsung.com> 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@samsung.com> >> --- >> 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); >> >> -- >> 1.7.0.4 >> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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@samsung.com> > --- > 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.
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);
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@samsung.com> --- drivers/mmc/card/queue.c | 17 ++++++++++------- 1 files changed, 10 insertions(+), 7 deletions(-)