public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Konrad Rzeszutek <konrad@virtualiron.com>
Cc: Mike Christie <michaelc@cs.wisc.edu>, linux-scsi@vger.kernel.org
Subject: Re: Questions about  [SCSI] modify scsi to handle new fail fast flags.
Date: Fri, 13 Mar 2009 16:24:21 +0000	[thread overview]
Message-ID: <1236961461.3276.82.camel@localhost.localdomain> (raw)
In-Reply-To: <20090313153757.GA11370@mars.virtualiron.com>

On Fri, 2009-03-13 at 11:37 -0400, Konrad Rzeszutek wrote:
> Hey Mike,
> 
> I was having a problem with one of the SATA controllers at work and traced it
> down to enclosure. But during that time I found out that the error handler
> of bio's issued from SCSI block vs the multipath block driver act differently.
> 
> The "scsi_eh_flush_done_q" is the one that controls whether the I/Os should
> be repeated or returned back. Earlier in the days it would check the
> bio->flags to see if the REQ_FAILFAST* attributes were set, but nowadays
> it is more discriminating and depending on the host_byte(scmd->result) figures
> out if needs to check for the REQ_FAILFAST* attribute.
> 
> The end result is that the bio's mapped through multipath have the same
> logic as through the SCSI block. Compared to Linux releases in RHEL53, SLES10
> the behaviour is different.
> 
> So my question is that OK? From the perspective of dm-mpath it looks as
> if the device driver now does the retry/re-issue and ignores the FAILFAST
> attribute. Instead of allowing dm-mpath to be the ...umm "brain" behind this.

I can try:  SCSI errors fall into three categories:

     1. Driver or Host (as in kmalloc failed while the driver was
        sending the packet out or the driver firmware failed and needs
        resetting).
     2. Transport errors (Parity/CRC error on the bus, transport failed
        to connect to end device etc)
     3. Device errors (device actually responded with an error, like
        MEDIUM_ERROR or NOT_READY).

You can see that errors in category 3 (Device) aren't going to change if
you simply change path, so we should be doing normal error handling.
Likewise, errors in category 1 (Driver or Host) are in the same bucket;
worse, some errors in this category (like firmware failure) need SCSI
error handling to fix: if we switch path they never recover and your
availability reduces.

The idea of the changes were to separate known transport errors (which
could be fixed by switching paths) from other errors which couldn't and
should still be handled via normal eh procedures (previously we'd just
switched paths for every retryable error and never got around to
actually seeing if the SCSI error handler could fix it).

James



      reply	other threads:[~2009-03-13 16:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-13 15:37 Questions about [SCSI] modify scsi to handle new fail fast flags Konrad Rzeszutek
2009-03-13 16:24 ` James Bottomley [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=1236961461.3276.82.camel@localhost.localdomain \
    --to=james.bottomley@hansenpartnership.com \
    --cc=konrad@virtualiron.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=michaelc@cs.wisc.edu \
    /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