Linux ATA/IDE development
 help / color / mirror / Atom feed
From: Alan <alan@lxorguk.ukuu.org.uk>
To: Tejun Heo <htejun@gmail.com>
Cc: Ric Wheeler <ric@emc.com>, Jeff Garzik <jeff@garzik.org>,
	linux-ide@vger.kernel.org
Subject: Re: [PATCH] libata: reduce ATA command timeout to 7secs
Date: Fri, 2 Feb 2007 15:39:29 +0000	[thread overview]
Message-ID: <20070202153929.33f4a806@localhost.localdomain> (raw)
In-Reply-To: <45C354CF.1020500@gmail.com>

> Hmm... I'm hearing different stories here.  Some say 7sec is good enough
> and the supporting argument that the other os is using 7 sec timeout is
> pretty convincing.

Firstly what is your goal ?

> 
> After command timeout, EH will kick in, reset and revalidate then return
> the control to SCSI HLD, sd in this case which will retry the command
> several times.  Would the reset make the drive to exit recovery mode
> such that it has to start all over again when the command is retried?
> Or does the drive stop responding to resets while in recovery mode?  The
> latter would be fine.  libata gives and will continue to give more than
> 30 secs for drive to respond to reset.
> 
> Ideas?

Some thinking based on discussion so far:

Give it 7 seconds for a command to complete. At that point you need to
have a chat with the drive since its probably gone AWOL. If you get an
error within 7 seconds then its different.

For a reported error within 7 seconds (CRC excepted)
	 do fast error cleanup (not a reset) when we can
	 if need be reset

On the first media error/timeout , retry the command but with the segment
list inverted
On the second reset retry each block individually

User specified time (allowing for recovery/queueing time) later, if we
haven't got the drive back running then give up on those blocks.

The reason I suggest issuing the segment list inverted is that its
statistically likely we only hit one bad area. It's also likey that bad
area is adjacent blocks (it might not be for some failures I grant). So
if we retry from the other end of the list we have a good chance that a
typical list of blocks (say 1-4, 300-305, 380-383, 440-456, 511, 535)
that blows up in the middle somewhere is going to run through the other
good segments and get them on disk or off disk and stuff up and going
again before stalling at the other end of the faulty area.

Alan

  reply	other threads:[~2007-02-02 15:27 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-02  6:37 [PATCH] libata: reduce ATA command timeout to 7secs Tejun Heo
2007-02-02 10:08 ` Alan
2007-02-02 11:49   ` Tejun Heo
2007-02-02 13:25 ` Ric Wheeler
2007-02-02 15:12   ` Tejun Heo
2007-02-02 15:39     ` Alan [this message]
2007-02-02 16:13       ` Mark Lord
2007-02-02 16:43         ` Eric D. Mudama
2007-02-02 18:47           ` Alan
2007-02-02 23:00             ` Eric D. Mudama
2007-02-03 23:34             ` Ric Wheeler
2007-02-03  4:31       ` Tejun Heo
2007-02-03 19:59         ` Alan
2007-02-03 19:50           ` Mark Lord
2007-02-02 16:12 ` Mark Lord
2007-02-03  4:45   ` Tejun Heo

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=20070202153929.33f4a806@localhost.localdomain \
    --to=alan@lxorguk.ukuu.org.uk \
    --cc=htejun@gmail.com \
    --cc=jeff@garzik.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=ric@emc.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox