Re: mmc: queue: amend buffer swap for non-blocking transfer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>

Thanks,
Per

On Fri, Sep 28, 2012 at 12:12 PM, Seungwon Jeon <tgih.jun@xxxxxxxxxxx> 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);
>
> --
> 1.7.0.4
>
>
> --
> 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
--
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


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux