Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jan 2006 02:06:09 +0000 (UTC)
From:      Ian Dowse <iedowse@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/cam cam_xpt.c
Message-ID:  <200601110206.k0B2699N020079@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
iedowse     2006-01-11 02:06:09 UTC

  FreeBSD src repository

  Modified files:
    sys/cam              cam_xpt.c 
  Log:
  When deregistering a bus, attempt to flush out all outstanding
  operations before returning. Point the bus at a dummy cam_sim
  structure so that any CCBs will complete immediately with a
  CAM_DEV_NOT_THERE status, and ensure that any xpt_schedule() calls
  on the bus's devices will immediately call the peripheral's
  periph_start() routine. Also repeat the async messages because
  devices that were part of the way through being probed may appear
  after the original AC_LOST_DEVICE was sent, and would otherwise
  never go away.
  
  These changes make it possible to deregister a bus and free the SIM
  at most stages during bus probing without the usual crashes in
  camisr(). In particular, plugging in a umass device and then
  unplugging it as soon as the first probe messages appeared would
  almost always result in a crash. Now the device just goes away with
  a few CAM errors and all references to the CAM bus, target and
  device are dropped correctly.
  
  Revision  Changes    Path
  1.157     +111 -8    src/sys/cam/cam_xpt.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601110206.k0B2699N020079>