On Sun, Nov 24, 2013 at 12:41:12PM +0100, Edgar Fuß wrote: > So, to partially answer myself: > > > scsipi/driver interaction (is there documentation on this?) > I had missed the comprehensive scsipi(9) man page. I guess I mis-typed > "scsipi" when looking for it. > > > First question: what's the appropriate xs->error? > So this has been answered both by me finding that man page and by Brian. > > > Second question: When repeatedly calling scsipi_done(), can it happen that > > scsipi tries to re-queue these requests before I return? I would then loose > > them when re-initializing the IOC. > >From the man page, I guess this can be prevented by scsipi_channel_freeze()? > > > Third question: Do I need to care about xs->xs_callout? > This has also been answerd by bot Brian and me finding the man page. > I didn't realize that mpt(4) did itself set up that callout. > > > Or is returning everything to scsipi simply the wrong approach? > Given there is XS_REQUEUE, I now think it's the right approach. But I may > be wrong, of course.
No, you want to use XS_REQUEUE here. And yes, you should stop the queue processing by the IOC before handling the queue. scsipi_channel_freeze() should allow to to prevent getting back the commands before the IOC is ready again (when it's ready again, call scsipi_channel_thaw()). -- Manuel Bouyer <[email protected]> NetBSD: 26 ans d'experience feront toujours la difference --
