cvs commit: src/sys/bus/cam cam_periph.c cam_periph.h cam_sim.c cam_sim.h cam_xpt.c src/sys/bus/cam/scsi scsi_cd.c scsi_ch.c scsi_da.c scsi_sa.c scsi_target.c

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Jul 17 17:08:18 PDT 2008


dillon      2008/07/17 17:07:23 PDT

DragonFly src repository

  Modified files:
    sys/bus/cam          cam_periph.c cam_periph.h cam_sim.c 
                         cam_sim.h cam_xpt.c 
    sys/bus/cam/scsi     scsi_cd.c scsi_ch.c scsi_da.c scsi_sa.c 
                         scsi_target.c 
  Log:
  Fix multiple bugs in CAM related devices which go away unexpectedly.  This
  fixes numerous panics when pulling a USB mass media device in the midst of
  heavy I/O.
  
  * The SIM lock was being unlocked via the periph->sim path after periph
    was unheld.  periph can become free and blow up the unlock, so get
    the sim into a local variable first, then release periph.
  
  * The code which waits for CCB completion needs to be a while loop, not
    an if.  It worked anyway, but wasn't very robust.
  
  * Add CAM_SIM_DEREGISTERED to flag when a sim is undergoing deregistration.
  
  * Beef up cam_dead_sim so it works more like a real sim.
  
  * Properly install &cam_dead_sim in the device and periph structures
    related to a SCSI bus, when deregistering the bus.
  
  * Disallow the addition of new devices when deregistering a bus.
  
  * NULL out periph->softc when freeing it.
  
  Revision  Changes    Path
  1.41      +13 -6     src/sys/bus/cam/cam_periph.c
  1.12      +1 -1      src/sys/bus/cam/cam_periph.h
  1.13      +18 -4     src/sys/bus/cam/cam_sim.c
  1.9       +2 -0      src/sys/bus/cam/cam_sim.h
  1.67      +96 -24    src/sys/bus/cam/cam_xpt.c
  1.44      +5 -11     src/sys/bus/cam/scsi/scsi_cd.c
  1.28      +4 -6      src/sys/bus/cam/scsi/scsi_ch.c
  1.58      +4 -5      src/sys/bus/cam/scsi/scsi_da.c
  1.36      +14 -18    src/sys/bus/cam/scsi/scsi_sa.c
  1.20      +1 -1      src/sys/bus/cam/scsi/scsi_target.c


http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_periph.c.diff?r1=1.40&r2=1.41&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_periph.h.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_sim.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_sim.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_xpt.c.diff?r1=1.66&r2=1.67&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/scsi/scsi_cd.c.diff?r1=1.43&r2=1.44&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/scsi/scsi_ch.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/scsi/scsi_da.c.diff?r1=1.57&r2=1.58&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/scsi/scsi_sa.c.diff?r1=1.35&r2=1.36&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/scsi/scsi_target.c.diff?r1=1.19&r2=1.20&f=u





More information about the Commits mailing list