[dm-devel] RE: [RFC PATCH 4/4] convert scsi to blkerr error values
goggin, edward
egoggin at emc.com
Sat Sep 17 12:10:43 UTC 2005
> -----Original Message-----
> From: Mike Christie [mailto:michaelc at cs.wisc.edu]
> Sent: Friday, September 16, 2005 4:26 PM
> To: goggin, edward
> Cc: axboe at suse.de; linux-scsi at vger.kernel.org; dm-devel at redhat.com
> Subject: Re: [RFC PATCH 4/4] convert scsi to blkerr error values
>
> goggin, edward wrote:
> > Mike,
> >
> > I don't think it is reasonably possible to anticipate
> > all possible parsing requirements for the asc and ascq
> > portions of SCSI sense information across all device
> > models. I'm in favor of having a "small" framework in
> > SCSI where a SCSI sense interpreter module (per
> > vendor & model possibly) could be registered
> > dynamically, by dm-emc.c for instance.
>
> Yeah I agree, I mentioned this before in some other mails. I think a
> module versus some table that userspace could write to were discussed.
Yes, I first heard about this idea from you on one of the multipathing
conference calls. I wasn't sure if you were still advocating for this
approach though :))
>
> The BLKERR values were meant to be able to tell upper layer
> code whether
> a transport or device or driver error occured and whether the lower
> level thought it was retryable. But then I thought I could
> also wedge in
> the handling of the vendor specifcs by adding a vendor specific SCSI
> module that would map the their specific value to a BLKERR_*
> one. And as
> I said offlist it is not working perfectly becuase we are losing some
> information in the translations.
>
> >
> > The extended error interpreter callout would be
> > triggered indirectly by a call from
> > __end_that_request_first to a extended error parser
> > associated with the io request's queue whenever it
> > sees a non-zero sense field of the io request.
> > Perhaps the sense and sense_len fields in the
> > request structure should be changed to not be
> > SCSI specific.
>
> So this just handles the sense type of error right? We still need
> something seperate for the transport and device etc errors correct?
Yeah, I forgot about those.
>
> >
> > Also, in order to allow for more variation and detail
> > in the interpretation of device specific SCSI asc and
> > ascq values, the results of the interpretation should
> > not be required to be block layer generic, but instead
> > are saved in something like a void *bi_extended_error
> > field of the bio. __end_that_request_first would push
> > the results of the extended_error interpretation to the
> > bi_extended_error field of each bio in the request,
> > similar to how Jens's code currently works.
> >
> > This extended error parsing approach should extend easily
> > (without requiring a kernel revision for new BLKERR values)
> > to new SCSI devices/models and their device specific asc
> > and ascq values. This design could also be extended to
> > support the interpretation of extended error information
> > for non-SCSI block devices like DASD.
> >
>
> I am fine with such a thing. You basically described what we
> have been
> talking about for some time but sperated the BLKERR part from
> the vendor
> specific part (which solves the problem I was having in trying to use
> the BLKERR value for two things). I am not the decision maker
> though so.
>
More information about the dm-devel
mailing list