From: Hannes Reinecke <hare@suse.de>
To: ygardi@codeaurora.org
Cc: james.bottomley@hansenpartnership.com,
linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-arm-msm@vger.kernel.org, santoshsy@gmail.com,
linux-scsi-owner@vger.kernel.org,
Gilad Broner <gbroner@codeaurora.org>,
Vinayak Holikatti <vinholikatti@gmail.com>,
"James E.J. Bottomley" <jbottomley@odin.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>
Subject: Re: [PATCH v7 03/17] scsi: ufs: implement scsi host timeout handler
Date: Wed, 9 Mar 2016 07:44:49 +0100 [thread overview]
Message-ID: <56DFC661.1020706@suse.de> (raw)
In-Reply-To: <6ad16fc5ec3738fb3f671e9dc71e7fb4.squirrel@us.codeaurora.org>
On 03/08/2016 08:58 PM, ygardi@codeaurora.org wrote:
>> On 03/08/2016 02:01 PM, Hannes Reinecke wrote:
>>> On 03/08/2016 01:35 PM, Yaniv Gardi wrote:
>>>> A race condition exists between request requeueing and scsi layer
>>>> error handling:
>>>> When UFS driver queuecommand returns a busy status for a request,
>>>> it will be requeued and its tag will be freed and set to -1.
>>>> At the same time it is possible that the request will timeout and
>>>> scsi layer will start error handling for it. The scsi layer reuses
>>>> the request and its tag to send error related commands to the device,
>>>> however its tag is no longer valid.
>>>> As this request was never really sent to the device, there is no
>>>> point to start error handling with the device.
>>>> Implement the scsi error handling timeout callback and bypass SCSI
>>>> error handling for request that were not actually sent to the device.
>>>> For such requests simply reset the block layer timer. Otherwise, let
>>>> SCSI layer perform the usual error handling.
>>>>
>>>> Reviewed-by: Dolev Raviv <draviv@codeaurora.org>
>>>> Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
>>>> Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
>>>>
>>>> ---
>>>> drivers/scsi/ufs/ufshcd.c | 36 ++++++++++++++++++++++++++++++++++++
>>>> 1 file changed, 36 insertions(+)
>>>>
>>> Having a timeout handler is always a good idea, even though this
>>> doesn't do anything here.
>>> Are we sure that the requests will return eventually?
>>> Does the UFS spec provide for a command abort?
>>>
>> In fact, looking at the UFS spec there _is_ a command abort.
>> I would recommend implementing a task management request UPIO with
>> type 'ABORT TASK' here for any task found to be pending.
>> In the end, you might run into a _valid_ timeout, at which point you
>> really want to abort the command...
>>
>
> but this is not what we'd like to achieve.
> we don't want to abort a task that was not even dispatched to the UFS driver.
> in those cases we need to re-queue the request and reset the timer.
>
Fully understood.
> Hannes, i appreciate your time, but I really don't understand why you
> insist on coming up with suggestions, when we already implemented one that
> is working. more over, your solution doesn't fix the race condition which is the
> reason for this patch.
> as i don't have HW to test anything at the moment, I think it's better to
> stick with this solution that also fix the BUG and also was verified and
> tested.
>
Ah. Didn't know that. I was under the impression that you _had_ the
hardware available. If not then of course it's not easy to verify
anything.
So, all things considered:
Reviewed-by: Hannes Reinecke <hare@suse.de>
Cheers,
Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@suse.de +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
next prev parent reply other threads:[~2016-03-09 6:44 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-08 12:35 [PATCH v7 00/17] add fixes, device quirks, error recovery, Yaniv Gardi
2016-03-08 12:35 ` [PATCH v7 01/17] scsi: ufs-qcom: add number of lanes per direction Yaniv Gardi
2016-03-08 12:35 ` [PATCH v7 02/17] scsi: ufs: avoid spurious UFS host controller interrupts Yaniv Gardi
2016-03-08 12:35 ` [PATCH v7 03/17] scsi: ufs: implement scsi host timeout handler Yaniv Gardi
2016-03-08 13:01 ` Hannes Reinecke
2016-03-08 13:20 ` Hannes Reinecke
2016-03-08 19:58 ` ygardi
2016-03-09 6:44 ` Hannes Reinecke [this message]
2016-03-08 13:36 ` ygardi
2016-03-08 12:35 ` [PATCH v7 04/17] scsi: ufs: verify hba controller hce reg value Yaniv Gardi
2016-03-08 12:35 ` [PATCH v7 05/17] scsi: ufs: add support to read device and string descriptors Yaniv Gardi
2016-03-08 12:35 ` [PATCH v7 06/17] scsi: ufs: separate device and host quirks Yaniv Gardi
2016-03-10 2:16 ` Martin K. Petersen
2016-03-10 15:36 ` ygardi
2016-03-08 12:35 ` [PATCH v7 07/17] scsi: ufs: disable vccq if it's not needed by UFS device Yaniv Gardi
2016-03-08 12:35 ` [PATCH v7 08/17] scsi: ufs: make error handling bit faster Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 09/17] scsi: ufs: add error recovery after DL NAC error Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 10/17] scsi: ufs: add retry for query descriptors Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 11/17] scsi: ufs: handle non spec compliant bkops behaviour by device Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 12/17] scsi: ufs: tune UniPro parameters to optimize hibern8 exit time Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 13/17] scsi: ufs: fix leakage during link off state Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 14/17] scsi: ufs: add device quirk delay before putting UFS rails in LPM Yaniv Gardi
2016-03-08 12:36 ` [PATCH v7 15/17] scsi: ufs-qcom: set PA_Local_TX_LCC_Enable before link startup Yaniv Gardi
2016-03-08 13:02 ` Hannes Reinecke
2016-03-08 12:36 ` [PATCH v7 16/17] scsi: ufs-qcom: enable/disable the device ref clock Yaniv Gardi
2016-03-08 13:03 ` Hannes Reinecke
2016-03-08 12:36 ` [PATCH v7 17/17] scsi: ufs-qcom: add printouts of testbus debug registers Yaniv Gardi
2016-03-08 13:04 ` Hannes Reinecke
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=56DFC661.1020706@suse.de \
--to=hare@suse.de \
--cc=gbroner@codeaurora.org \
--cc=james.bottomley@hansenpartnership.com \
--cc=jbottomley@odin.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi-owner@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=santoshsy@gmail.com \
--cc=vinholikatti@gmail.com \
--cc=ygardi@codeaurora.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).