From: Wols Lists <antlists@youngman.org.uk>
To: Phil Turmel <philip@turmel.org>,
Chris Murphy <lists@colorremedies.com>,
Hannes Reinecke <hare@suse.de>
Cc: linux-raid@vger.kernel.org
Subject: Re: URE, link resets, user hostile defaults
Date: Tue, 28 Jun 2016 21:46:08 +0100 [thread overview]
Message-ID: <5772E210.4090007@youngman.org.uk> (raw)
In-Reply-To: <5772C1DE.9000403@turmel.org>
On 28/06/16 19:28, Phil Turmel wrote:
> On 06/28/2016 01:33 PM, Chris Murphy wrote:
>
>> > Perhaps there's a better way to do this than change the default
>> > timeout in the kernel? Maybe what we need is an upstream udev rule
>> > that polls SCT ERC for each drive, and if it's
>> > disabled/unsupported/unknown then it sets a much higher command timer
>> > for that block device. And maybe it only does this on USB and SATA.
>> > For anything enterprise or NAS grade, they do report (at least to
>> > smartctl) SCT ERC in deciseconds. The most common value is 70
>> > deciseconds, so a 30 second command timer is OK. Maybe it could even
>> > be lower but that's a separate optimization conversation.
> When Neil retired from maintainership, I mentioned that I would take a
> stab at this. You're right, just setting the kernel default timeout to
> 180 would be a regression. If I recall correctly, there are network
> services that would disconnect if storage stacks could delay that long
> before replying, whether good or bad.
>
> So a device discovery process that examines the drive's parameter pages
> and makes an intelligent decision would be the way to go. But as you
> can see, I haven't dug into the ata & scsi layers to figure it out yet.
> It won't hurt my feelings if someone beats me to it.
Talking off the top of my head :-) would it be possible to spawn a
kernel thread - if it takes longer than an aggressive time-out - that
just waits for far longer then rewrites it if the read finally completes?
In other words, wait for say the 70 deciseconds, then spawn the rewrite
thread, then continue waiting until whatever timeout. The thread could
actually not even time out but just wait for the drive to time out. If
the drive (eventually) responds rather than timing out then the rewrite
would hopefully fix the potential impending URE.
So we'd need two timeouts really. Timeout 1 says "if it takes longer
than this, do a background rewrite when it finally succeeds", and
timeout 2 says "if it takes longer than this, return an error, but let
the rewrite thread continue to wait".
Cheers,
Wol
next prev parent reply other threads:[~2016-06-28 20:46 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-27 16:42 URE, link resets, user hostile defaults Chris Murphy
2016-06-28 6:33 ` Hannes Reinecke
2016-06-28 17:33 ` Chris Murphy
2016-06-28 18:28 ` Phil Turmel
2016-06-28 20:46 ` Wols Lists [this message]
2016-06-28 22:17 ` Chris Murphy
2016-06-29 6:01 ` Hannes Reinecke
2016-06-29 10:48 ` Pasi Kärkkäinen
2016-06-29 12:17 ` Zygo Blaxell
2016-06-29 18:16 ` Edward Kuns
2016-07-01 20:43 ` Chris Murphy
2016-07-04 6:00 ` Hannes Reinecke
2016-07-04 21:43 ` Pasi Kärkkäinen
2016-08-19 10:00 ` Pasi Kärkkäinen
2016-08-19 12:36 ` Phil Turmel
2016-08-19 15:30 ` Chris Murphy
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=5772E210.4090007@youngman.org.uk \
--to=antlists@youngman.org.uk \
--cc=hare@suse.de \
--cc=linux-raid@vger.kernel.org \
--cc=lists@colorremedies.com \
--cc=philip@turmel.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 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.