I posted an ioprbs(4) patch to tech@ early last week in need of testing. Still haven't heard anything, so now prodding misc@ in case there are any lurkers.
If I don't hear back from anyone, I'll be removing I2O support (i.e., iop(4), iopsp(4), and ioprbs(4)), so I suggest you speak up now if you're still using it. On Tue, Jul 06, 2010 at 03:02:10PM -0700, Matthew Dempsky wrote: > Still waiting to hear back from someone on this diff. Can anyone at > least confirm that ioprbs(4) is still being used? > > On Sun, Jun 27, 2010 at 09:48:03AM -0700, Matthew Dempsky wrote: > > Anyone still using ioprbs(4)? If so, please test the diff below and > > report back to me. > > > > Index: dev/i2o/ioprbs.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/i2o/ioprbs.c,v > > retrieving revision 1.20 > > diff -u -p dev/i2o/ioprbs.c > > --- dev/i2o/ioprbs.c 23 Mar 2010 01:57:19 -0000 1.20 > > +++ dev/i2o/ioprbs.c 28 Jun 2010 19:59:33 -0000 > > @@ -544,7 +544,7 @@ ioprbs_intr(struct device *dv, struct iop_msg *im, voi > > { > > struct i2o_rbs_reply *rb = reply; > > struct ioprbs_ccb *ccb = im->im_dvcontext; > > - struct buf *bp = ccb->ic_xs->bp; > > + struct scsi_xfer *xs = ccb->ic_xs; > > struct ioprbs_softc *sc = (struct ioprbs_softc *)dv; > > struct iop_softc *iop = (struct iop_softc *)dv->dv_parent; > > int err, detail; > > @@ -554,7 +554,7 @@ ioprbs_intr(struct device *dv, struct iop_msg *im, voi > > > > DPRINTF(("ioprbs_intr(%p, %p, %p) ", dv, im, reply)); > > > > - timeout_del(&ccb->ic_xs->stimeout); > > + timeout_del(&xs->stimeout); > > > > err = ((rb->msgflags & I2O_MSGFLAGS_FAIL) != 0); > > > > @@ -572,18 +572,14 @@ ioprbs_intr(struct device *dv, struct iop_msg *im, voi > > err = 1; > > } > > > > - if (bp) { > > - if (err) { > > - bp->b_flags |= B_ERROR; > > - bp->b_error = EIO; > > - bp->b_resid = bp->b_bcount; > > - } else > > - bp->b_resid = bp->b_bcount - letoh32(rb->transfercount); > > - } > > + if (err) > > + xs->error = XS_DRIVER_STUFFUP; > > + else > > + xs->resid = xs->datalen - letoh32(rb->transfercount); > > > > iop_msg_unmap(iop, im); > > iop_msg_free(iop, im); > > - scsi_done(ccb->ic_xs); > > + scsi_done(xs); > > ioprbs_free_ccb(sc, ccb); > > }