Subject: CVS commit: syssrc
To: None <>
From: Jason R Thorpe <>
List: source-changes
Date: 10/19/1999 10:39:50
Module Name:	syssrc
Committed By:	thorpej
Date:		Tue Oct 19 17:39:49 UTC 1999

Modified Files:
	syssrc/sys/dev/scsipi [thorpej_scsipi]: atapi_base.c atapi_wdc.c
	    atapiconf.c atapiconf.h cd.c cd_atapi.c cd_scsi.c cdvar.h ch.c
	    if_se.c scsi_base.c scsiconf.c scsiconf.h scsipi_all.h
	    scsipi_base.c scsipi_base.h scsipi_ioctl.c scsipi_verbose.c
	    scsipiconf.c scsipiconf.h sd.c sd_atapi.c sd_scsi.c sdvar.h ss.c
	    ss_mustek.c ss_scanjet.c ssvar.h st.c uk.c

Log Message:
Completely rewritten scsipi_xfer execution engine:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).

There is a lot more work to do, but this correctly functions for the most
part on several file servers I run.

To generate a diff of this commit:
cvs rdiff -r1.14 -r1.14.2.1 syssrc/sys/dev/scsipi/atapi_base.c
cvs rdiff -r1.27 -r1.27.2.1 syssrc/sys/dev/scsipi/atapi_wdc.c
cvs rdiff -r1.28 -r1.28.2.1 syssrc/sys/dev/scsipi/atapiconf.c
cvs rdiff -r1.7 -r1.7.12.1 syssrc/sys/dev/scsipi/atapiconf.h
cvs rdiff -r1.131 -r1.131.2.1 syssrc/sys/dev/scsipi/cd.c
cvs rdiff -r1.11 -r1.11.2.1 syssrc/sys/dev/scsipi/cd_atapi.c \
    syssrc/sys/dev/scsipi/cdvar.h syssrc/sys/dev/scsipi/sd_scsi.c \
cvs rdiff -r1.16 -r1.16.2.1 syssrc/sys/dev/scsipi/cd_scsi.c
cvs rdiff -r1.40 -r1.40.2.1 syssrc/sys/dev/scsipi/ch.c
cvs rdiff -r1.25 -r1.25.2.1 syssrc/sys/dev/scsipi/if_se.c
cvs rdiff -r1.69 -r1.69.2.1 syssrc/sys/dev/scsipi/scsi_base.c
cvs rdiff -r1.130 -r1.130.2.1 syssrc/sys/dev/scsipi/scsiconf.c
cvs rdiff -r1.47 -r1.47.10.1 syssrc/sys/dev/scsipi/scsiconf.h
cvs rdiff -r1.12 -r1.12.8.1 syssrc/sys/dev/scsipi/scsipi_all.h
cvs rdiff -r1.26 -r1.26.2.1 syssrc/sys/dev/scsipi/scsipi_base.c \
cvs rdiff -r1.9 -r1.9.10.1 syssrc/sys/dev/scsipi/scsipi_base.h
cvs rdiff -r1.37 -r1.37.2.1 syssrc/sys/dev/scsipi/scsipi_ioctl.c
cvs rdiff -r1.10 -r1.10.8.1 syssrc/sys/dev/scsipi/scsipi_verbose.c
cvs rdiff -r1.8 -r1.8.10.1 syssrc/sys/dev/scsipi/scsipiconf.c
cvs rdiff -r1.32 -r1.32.2.1 syssrc/sys/dev/scsipi/scsipiconf.h
cvs rdiff -r1.151 -r1.151.2.1 syssrc/sys/dev/scsipi/sd.c
cvs rdiff -r1.5 -r1.5.2.1 syssrc/sys/dev/scsipi/sd_atapi.c
cvs rdiff -r1.9 -r1.9.2.1 syssrc/sys/dev/scsipi/sdvar.h
cvs rdiff -r1.18 -r1.18.2.1 syssrc/sys/dev/scsipi/ss_scanjet.c
cvs rdiff -r1.6 -r1.6.14.1 syssrc/sys/dev/scsipi/ssvar.h
cvs rdiff -r1.114 -r1.114.2.1 syssrc/sys/dev/scsipi/st.c
cvs rdiff -r1.27 -r1.27.10.1 syssrc/sys/dev/scsipi/uk.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.