All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konstantin Dorfman <kdorfman@codeaurora.org>
To: Seungwon Jeon <tgih.jun@samsung.com>
Cc: linux-mmc@vger.kernel.org, 'Chris Ball' <cjb@laptop.org>,
	'Per Forlin' <per.forlin@linaro.org>
Subject: Re: [PATCH] mmc: queue: exclude asynchronous transfer for special request
Date: Sat, 22 Dec 2012 12:56:24 +0200	[thread overview]
Message-ID: <50D591D8.9080503@codeaurora.org> (raw)
In-Reply-To: <001801cddf3d$23b78040$6b2680c0$%jun@samsung.com>

On 12/21/2012 07:36 AM, Seungwon Jeon wrote:
> On Thursday, December 20, 2012, Konstantin Dorfman wrote:
>> Hello Jeon,
>>
>>
>> On 12/20/2012 12:27 PM, Seungwon Jeon wrote:
>>> Unlike normal r/w request, special requests(discard, flush)
>>> is finished with a one-time issue_fn. Request change to
>>> mqrq_prev makes unnecessary call.
>>>
>>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>>> ---
>>>    drivers/mmc/card/queue.c |    8 ++++++++
>>>    1 files changed, 8 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
>>> index fadf52e..a71db7a 100644
>>> --- a/drivers/mmc/card/queue.c
>>> +++ b/drivers/mmc/card/queue.c
>>> @@ -58,6 +58,7 @@ static int mmc_queue_thread(void *d)
>>>    	do {
>>>    		struct request *req = NULL;
>>>    		struct mmc_queue_req *tmp;
>>> +		unsigned int cmd_flags = 0;
>>>
>>>    		spin_lock_irq(q->queue_lock);
>>>    		set_current_state(TASK_INTERRUPTIBLE);
>>> @@ -67,12 +68,19 @@ static int mmc_queue_thread(void *d)
>>>
>>>    		if (req || mq->mqrq_prev->req) {
>>>    			set_current_state(TASK_RUNNING);
>>> +			cmd_flags = req ? req->cmd_flags : 0;
>>>    			mq->issue_fn(mq, req);
>>>
>>>    			/*
>>>    			 * Current request becomes previous request
>>>    			 * and vice versa.
>>> +			 * In case of special requests, current request
>>> +			 * has been finished. Do not remain it to previous
>>> +			 * request.
>>>    			 */
>>> +			if (cmd_flags & REQ_DISCARD || cmd_flags & REQ_FLUSH)
>>> +				mq->mqrq_cur->req = NULL;
>>> +
>>>    			mq->mqrq_prev->brq.mrq.data = NULL;
>>>    			mq->mqrq_prev->req = NULL;
>>>    			tmp = mq->mqrq_prev;
>>>
>> It is better to define control mask, REQ_CONTROL_MASK, which will
>> include all control/special requests.
> Agree, it's better.
>
>>
>> Then, when additional request will be added, there will be no need to
>> change here, only update the mask.
>>
>> Another option - to clean mq->mqrq_cur->req immediately after executing
>> a special request in mmc_blk_issue_rq().
> Yes, I also approached it with the same idea at the beginning.
> But it seems that 'queue.c' has a role of management of two requests,
> while 'block.c' just uses these request. It makes sense?
Sure, agree with you.

Thanks,

-- 
Konstantin Dorfman,
QUALCOMM ISRAEL, on behalf of Qualcomm Innovation Center,
Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

      reply	other threads:[~2012-12-22 10:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-20 10:27 [PATCH] mmc: queue: exclude asynchronous transfer for special request Seungwon Jeon
2012-12-20 14:44 ` Konstantin Dorfman
2012-12-20 14:52 ` Konstantin Dorfman
2012-12-21  5:36   ` Seungwon Jeon
2012-12-22 10:56     ` Konstantin Dorfman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50D591D8.9080503@codeaurora.org \
    --to=kdorfman@codeaurora.org \
    --cc=cjb@laptop.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=per.forlin@linaro.org \
    --cc=tgih.jun@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.