Subject: Re: Request for review on scsipi changes
To: James Chacon <jchacon@genuity.net>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-kern
Date: 09/17/2002 08:57:57
On Mon, Sep 16, 2002 at 01:28:44PM -0400, James Chacon wrote:

 > -	printf(": %d targets, %d luns per target\n",
 > -	    chan->chan_ntargets, chan->chan_nluns);
 > -
 > -
 > -	/*
 > -	 * Defer configuration of the children until interrupts
 > -	 * are enabled.
 > -	 */
 > -	config_interrupts(self, scsibus_config_interrupts);

Actually, right here you need to do a "config_pending_incr()", because
you want to defer mounting of the root file system until all SCSI busses
have had a chance to start their completion thread.  Note that the
config_interrupts() function internally does a config_pending_incr().

...and this means...

 >  void
 > -scsibus_config_interrupts(self)
 > -	struct device *self;
 > +scsibus_config(chan, arg)
 > +	struct scsipi_channel *chan;
 > +	void *arg;
 >  {
 > -	struct scsibus_softc *sc = (void *) self;
 > +	struct scsibus_softc *sc = arg;
 > +	struct scsi_initq *scsi_initq;
 >  
 >  #ifndef SCSI_DELAY
 >  #define SCSI_DELAY 2
 >  #endif
 >  
 > -	if ((sc->sc_channel->chan_flags & SCSIPI_CHAN_NOSETTLE) == 0 &&
 > +	config_pending_incr();

That this config_pending_incr() should go away :-)

-- 
        -- Jason R. Thorpe <thorpej@wasabisystems.com>