From: Mike Snitzer <snitzer@redhat.com>
To: device-mapper development <dm-devel@redhat.com>
Cc: "linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH 2/2] scsi : fixing the new host byte settings (DID_TARGET_FAILURE and DID_NEXUS_FAILURE)
Date: Wed, 25 Jan 2012 17:47:51 -0500 [thread overview]
Message-ID: <20120125224751.GA24571@redhat.com> (raw)
In-Reply-To: <77471C95FAFD844C8CA02DD4F4C5FE2BF002@SACEXCMBX02-PRD.hq.netapp.com>
On Wed, Jan 25 2012 at 4:39pm -0500,
Moger, Babu <Babu.Moger@netapp.com> wrote:
> > -----Original Message-----
> > From: Mike Snitzer [mailto:snitzer@redhat.com]
> > Sent: Tuesday, January 24, 2012 5:03 PM
> > To: Moger, Babu
> > Cc: linux-scsi@vger.kernel.org; device-mapper development (dm-
> > devel@redhat.com)
> > Subject: Re: [PATCH 2/2] scsi : fixing the new host byte settings
> > (DID_TARGET_FAILURE and DID_NEXUS_FAILURE)
> >
> > Hi Babu,
> >
> > Thanks for finding this.
> >
> > On Tue, Jan 24 2012 at 3:38pm -0500,
> > Moger, Babu <Babu.Moger@netapp.com> wrote:
> >
> > > Resubmitting as my previous post had format issues and did not go linux-scsi.
> > >
> > > This patch fixes the host byte settings DID_TARGET_FAILURE and
> > DID_NEXUS_FAILURE.
> > > The function __scsi_error_from_host_byte, tries to reset the host byte to
> > DID_OK. But that
> > > does not happen because of the OR operation.
> > >
> > > Here is the flow.
> > > scsi_softirq_done-> scsi_decide_disposition -> __scsi_error_from_host_byte
> >
> > or more accurately:
> >
> > scsi_softirq_done -> scsi_decide_disposition
> > scsi_softirq_done -> scsi_finish_command -> scsi_io_completion ->
> > __scsi_error_from_host_byte
> >
> > > Let's take an example with DID_NEXUS_FAILURE. In scsi_decide_disposition,
> > result will be set as
> > > DID_NEXUS_FAILURE (=0x11). Then in __scsi_error_from_host_byte, when we
> > do OR with
> > > DID_OK. Purpose is to reset it back to DID_OK. But that does not happen. This
> > patch fixes this issue.
> >
> > We clearly aren't properly resetting to DID_OK but I'm not seeing an
> > obvious "nasty bug" that is lurking due to this. Am I missing
> > something?
>
> Yes. It is causing some issues in our proprietary multipath driver. Normally, our assumption
> is that host status overrides all other statuses. If host status is set to status other than DID_OK
> then we normally ignore other statuses(like reading the check sense). We have worked this around.
> My assumption is, most of the user Level code does the same thing. It might give wrong impression
> about the kind of error.
>
> One question.. Did the newlines wrapped in this patch also?
Looks fine to me.
> > __scsi_error_from_host_byte() is setting error which is passed back up
> > via blk_end_request() and blk_end_request_all(). And in my previous
> > testing I know that corresponding errors are making it out to
> > dm-multipath (e.g. -EREMOTEIO).
> >
> > Also, your patch header is missing the location where DID_OK is not
> > properly matched (because it wasn't set exclussively due to being
>
> I am not sure what you meant here.
Well like I said, it is clear that scsi_noretry_cmd() won't match the
DID_OK case in the host_byte select statement. I was just wondering
where else this improperly set DID_OK was causing a DID_OK match to not
happen.
But the fact that this is impacting your proprietary multipath driver
basically answers my question (I was trying to understand what was
ultimately broken as a result of us improperly resetting to DID_OK).
All said:
Acked-by: Mike Snitzer <snitzer@redhat.com>
next prev parent reply other threads:[~2012-01-25 22:47 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-24 20:38 [PATCH 2/2] scsi : fixing the new host byte settings (DID_TARGET_FAILURE and DID_NEXUS_FAILURE) Moger, Babu
2012-01-24 23:03 ` Mike Snitzer
2012-01-25 21:39 ` Moger, Babu
2012-01-25 22:47 ` Mike Snitzer [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-01-23 18:43 Moger, Babu
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=20120125224751.GA24571@redhat.com \
--to=snitzer@redhat.com \
--cc=dm-devel@redhat.com \
--cc=linux-scsi@vger.kernel.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.