Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev/scsipi



On Mon, Apr 25, 2011 at 12:33:20PM -0500, David Young wrote:
> On Mon, Apr 25, 2011 at 06:26:09PM +0200, Juergen Hannken-Illjes wrote:
> > On Mon, Apr 25, 2011 at 10:33:14AM -0500, David Young wrote:
> > > On Mon, Apr 25, 2011 at 02:14:23PM +0000, Juergen Hannken-Illjes wrote:
> > > > Module Name:    src
> > > > Committed By:   hannken
> > > > Date:           Mon Apr 25 14:14:22 UTC 2011
> > > > 
> > > > Modified Files:
> > > >         src/sys/dev/scsipi: scsiconf.c
> > > > 
> > > > Log Message:
> > > > Don't kill outstanding requests when detaching a scsibus on shutdown.
> > > > Both the controller and tyhe targets are still running.
> > > 
> > > I don't think you have fixed the actual bug.  It sounds like the
> > > detachment routine is broken in every case where the controller was not
> > > abruptly detached, but the driver relinquishes control of the controller
> > > in an orderly fashion because of an operator command.
> > 
> > The actual bug was i386 shutdown, a loop of vfs_unmountall1, 
> > config_detach_all
> > and vfs_unmount_forceone.  Here config_detach_all() detaches devices from
> > the leafs up.
> > For me it sometimes happend that the (scsi) root disk had outstanding xfers
> > when it came to config_detach_all().  The disk would not detach but the
> > bus detach would kill all outstanding operations.  I don't want these xfers 
> > to
> > abort but the disk continue operations until all xfers are done.
> > 
> > And yes, this detach routine looks bogus at least ...
> 
> The bug was in scsibusdetach(), which is not doing things in the proper
> order: it has to detach its children and check for error.  If no error,
> then it can release the resources that the children were using.  See
> attached patch.

Yes, looks much better than mine ... please commit.

-- 
Juergen Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig 
(Germany)


Home | Main Index | Thread Index | Old Index