Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Jan 2000 15:24:02 +0000 (GMT)
From:      Nick Hibma <n_hibma@webweaving.org>
To:        Matthew Jacob <mjacob@feral.com>
Cc:        FreeBSD SCSI Mailing List <scsi@FreeBSD.ORG>
Subject:   Re: bug in cam_periph.c
Message-ID:  <Pine.BSF.4.20.0001241521460.97525-100000@localhost>
In-Reply-To: <Pine.BSF.4.10.10001240623480.59803-100000@beppo.feral.com>

next in thread | previous in thread | raw e-mail | index | archive | help

I found the code while implementing the autosense in software in the
umass driver. This is true for the vpo driver as well.

You are basically saying that we could implement the sense command
there. Except that of course for example from scsi_da.c that generic
routine is never called. It relies on autosense I believe.

Nick

On Mon, 24 Jan 2000, Matthew Jacob wrote:

> You're right that the existing code makes no sense. This is actually an area
> which needs some serious work, but hasn't been excercised much because we
> don't have HBA's that don't do some form of autosense or self-autosense.
> 
> In my opinion, you're patch is logically right, but the whole block is not
> quite right- if auto sense failed, the midlayer should run a SENSE command,
> else the command should, I guess, be retried if retries are left.
> 
> 
> 
> On Mon, 24 Jan 2000, Nick Hibma wrote:
> 
> > 
> > the following diff code does not make sense to me. first check for a
> > retry count larger than zero and return EIO when it is. I guess that
> > this piee of code has not been exercised very much, because changing it
> > did not make a difference for the SCSI devices I have here.
> > 
> > 
> >                         } else if (ccb->ccb_h.retry_count > 0) {
> >                                 /*
> >                                  * XXX KDM shouldn't there be a better
> >                                  * argument to return??
> >                                  */
> >                                 error = EIO;
> >                         } else {
> >                                 /* decrement the number of retries */
> >                                 retry = ccb->ccb_h.retry_count > 0;
> >                                 if (retry)
> >                                         ccb->ccb_h.retry_count--;
> >                                 /*
> >                                  * If it was aborted with no
> >                                  * clue as to the reason, just
> >                                  * retry it again.
> >                                  */
> >                                 error = ERESTART;
> >                         }
> > 
> > 
> > 
> > 
> > Patch below:
> > 
> > --- cam_periph.c.orig   Mon Jan 24 10:34:23 2000
> > +++ cam_periph.c        Mon Jan 24 10:34:27 2000
> > @@ -1439,7 +1439,7 @@
> >                                       "CAM_AUTOSENSE_FAILED");
> >                                 /* NOTREACHED */
> >                                 error = EIO;
> > -                       } else if (ccb->ccb_h.retry_count > 0) {
> > +                       } else if (ccb->ccb_h.retry_count == 0) {
> >                                 /*
> >                                  * XXX KDM shouldn't there be a better
> >                                  * argument to return??
> > 
> > --
> > n_hibma@webweaving.org
> > n_hibma@freebsd.org                                          USB project
> > http://www.etla.net/~n_hibma/
> > 
> > 
> > 
> > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > with "unsubscribe freebsd-scsi" in the body of the message
> > 
> 
> 

--
n_hibma@webweaving.org
n_hibma@freebsd.org                                          USB project
http://www.etla.net/~n_hibma/



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.20.0001241521460.97525-100000>