1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
freebsd/usr.sbin
Poul-Henning Kamp 1b67be7b75 Rewrite of the floppy driver to make it MPsafe & GEOM friendly:
Centralize the fdctl_wr() function by adding the offset in
	the resource to the softc structure.

	Bugfix: Read the drive-change signal from the correct place:
	same place as the ctl register.

	Remove the cdevsw{} related code and implement a GEOM class.

	Ditch the state-engine and park a thread on each controller
	to service the queue.

	Make the interrupt FAST & MPSAFE since it is just a simple
	wakeup(9) call.

	Rely on a per controller mutex to protect the bioqueues.
	Grab GEOMs topology lock when we have to and Giant when
	ISADMA needs it.  Since all access to the hardware is
	isolated in the per controller thread, the rest of the
	driver is lock & Giant free.

	Create a per-drive queue where requests are parked while
	the motor spins up.  When the motor is running the requests
	are purged to the per controller queue.  This allows
	requests to other drives to be serviced during spin-up.

	Only setup the motor-off timeout when we finish the last
	request on the queue and cancel it when a new request
	arrives.  This fixes the bug in the old code where the motor
	turned off while we were still retrying a request.

	Make the "drive-change" work reliably.  Probe the drive on
	first opens.  Probe with a recal and a seek to cyl=1 to
	reset the drive change line and check again to see if we
	have a media.

	When we see the media disappear we destroy the geom provider,
	create a new one, and flag that autodetection should happen
	next time we see a media (unless a specific format is configured).

	Add sysctl tunables for a lot of drive related parameters.
	If you spend a lot of time waiting for floppies you can
	grab the i82078 pdf from Intels web-page and try tuning
	these.

	Add sysctl debug.fdc.debugflags which will enable various
	kinds of debugging printfs.

	Add central definitions of our well known floppy formats.

	Simplify datastructures for autoselection of format and
	call the code at the right times.

	Bugfix: Remove at least one piece of code which would have
	made 2.88M floppies not work.

	Use implied seeks on enhanced controllers.

	Use multisector transfers on all controllers.  Increase
	ISADMA bounce buffers accordingly.

	Fall back to single sector when retrying.  Reset retry count
	on every successful transaction.

	Sort functions in a more sensible order and generally tidy
	up a fair bit here and there.

	Assorted related fixes and adjustments in userland utilities.

WORKAROUNDS:
	Do allow r/w opens of r/o media but refuse actual write
	operations.  This is necessary until the p4::phk_bufwork
	branch gets integrated (This problem relates to remounting
	not reopening devices, see sys/*/*/${fs}_vfsops.c for details).

	Keep PC98's private copy of the old floppy driver compiling
	and presumably working (see below).

TODO (planned)

	Move probing of drives until after interrupts/timeouts work
	(like for ATA/SCSI drives).

TODO (unplanned)

	This driver should be made to work on PC98 as well.

	Test on YE-DATA PCMCIA floppy drive.

	Fix 2.88M media.

This is a MT5 candidate (depends on the bioq_takefirst() addition).
2004-08-20 15:14:25 +00:00
..
ac Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
accton Per letter dated July 22, 1999, delete clause 3 from code directly 2004-08-07 04:19:37 +00:00
acpi When one entry in the RSDT is corrupted, just skip it instead of bailing out. 2004-08-18 05:56:07 +00:00
adduser
amd Reenable nullfs for local links. The change from 'struct vfsconf' 2004-07-15 13:24:44 +00:00
ancontrol Drop WARNS down to 3 since sparc64 still has justified complaints about 2004-07-30 21:43:21 +00:00
apm Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
apmd Eliminated double whitespace. 2004-07-03 18:35:53 +00:00
arlcontrol
arp Per letter dated July 22, 1999, delete clause 3 from code directly 2004-08-07 04:19:37 +00:00
asf
atm Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
authpf
bluetooth Update links to the bluez-firmware package 2004-08-11 00:22:23 +00:00
boot0cfg Enable packet mode by default. Disk drives have gotten so large now, 2004-08-03 15:20:55 +00:00
boot98cfg Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
bootparamd
bsnmpd Link to the build again. The problem was that we need a new 2004-08-11 16:47:12 +00:00
btxld Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
burncd Refer to the sysutils/cdrtools port now that the sysutils/mkisofs port 2004-07-16 08:53:25 +00:00
cdcontrol
chkgrp
chown Per letter dated July 22, 1999, delete clause 3 from code directly 2004-08-07 04:19:37 +00:00
chroot Per letter dated July 22, 1999, delete clause 3 from code directly 2004-08-07 04:19:37 +00:00
ckdist Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
config Per letter dated July 22, 1999, delete clause 3 from code directly 2004-08-07 04:19:37 +00:00
cron Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
crunch Fix a 4.X -> 5.X upgrade problem: crunchgen used to emit a line 'MAKE=make' 2004-08-09 19:18:19 +00:00
ctm Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
daemon mdoc(7) fixes. 2004-07-07 19:57:16 +00:00
dconschat
devinfo
digictl
diskinfo
editmap
edquota Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
eeprom Save on one variable in ofwo_action(). Leftover from an older version of 2004-08-15 20:18:54 +00:00
elf2exe
extattr
extattrctl
faithd
fdcontrol Rewrite of the floppy driver to make it MPsafe & GEOM friendly: 2004-08-20 15:14:25 +00:00
fdformat Rewrite of the floppy driver to make it MPsafe & GEOM friendly: 2004-08-20 15:14:25 +00:00
fdread Rewrite of the floppy driver to make it MPsafe & GEOM friendly: 2004-08-20 15:14:25 +00:00
fdwrite Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
fwcontrol
getfmac
getpmac
gstat
i4b Replaced COPTS by equivalent CFLAGS. 2004-08-13 14:21:49 +00:00
ifmcstat
inetd Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
iostat
ip6addrctl
ipftest
ipresend
ipsend
iptest
IPXrouted Per letter dated July 22, 1999, delete clause 3 from code directly 2004-08-07 04:19:37 +00:00
jail o Add -l option to jail(8) similar to su(1): before running jail'ed 2004-08-15 08:21:50 +00:00
jexec
jls
kbdcontrol fix bug which prevented programming function keys that were exactly 16 2004-08-09 04:27:58 +00:00
kbdmap Eliminated double whitespace. 2004-07-03 18:35:53 +00:00
kernbb Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
keyserv Join the 21st century: Cryptography is no longer an optional component 2004-08-06 07:27:08 +00:00
kgmon Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
kgzip Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
kldxref
lastlogin Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
lpr Eliminated double whitespace. 2004-07-03 18:35:53 +00:00
lptcontrol Priner control devices are now lpt*.ctl. 2004-07-18 02:22:47 +00:00
mailstats
mailwrapper Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
makemap
manctl
memcontrol
mergemaster Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
mixer Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
mld6query
mlxcontrol Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
mount_nwfs
mount_portalfs Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
mount_smbfs
mountd Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
moused Teach moused about Synaptics touchpads. 2004-08-03 18:43:45 +00:00
mptable
mrouted Fix a few cases that relied on 'implicit int' (constraint violation in C99). 2004-07-11 17:37:33 +00:00
mtest Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
mtree Remove extra "*/". 2004-08-07 10:04:29 +00:00
named
named.reload Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
named.restart Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
ndc
ndiscvt Today, RealTek sent me a driver to test which had been compiled with 2004-08-02 18:54:01 +00:00
ndp Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
newsyslog Nothing says that /var/log can't be not a directory but a symbolic link 2004-07-04 17:24:12 +00:00
nfsd Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
ngctl Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
nghook
nologin Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
nslookup
nsupdate
ntp ntptimeset is not build anymore by default so remove it for the time being. 2004-08-13 09:10:38 +00:00
ofwdump Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
pccard Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
pciconf Revert unintended commit that came in with 3rd clause removal 2004-08-07 16:36:46 +00:00
pcvt Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
periodic
pkg_install Don't put DEBUG to CFLAGS, we have the standard DEBUG_FLAGS for this. 2004-08-12 20:06:01 +00:00
pnpinfo
ppp Join the 21st century: Cryptography is no longer an optional component 2004-08-06 07:27:08 +00:00
pppctl Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
pppd Join the 21st century: Cryptography is no longer an optional component 2004-08-06 07:27:08 +00:00
pppstats
praliases
procctl
pstat Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
pw Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
pwd_mkdb Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
quot Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
quotaon Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
rarpd Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
raycontrol
repquota Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
rip6query
rmt Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
route6d
rpc.lockd After talking to Colin, 2004-07-16 12:50:10 +00:00
rpc.statd Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
rpc.umntall
rpc.yppasswdd Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
rpc.ypupdated
rpc.ypxfrd
rpcbind MFNetBSD 2004-08-16 00:20:31 +00:00
rrenumd Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
rtadvd Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
rtprio Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
rtsold Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
rwhod Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
sa Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
sade Fix installing from SCSI tape drives by catching up device names with 2004-08-16 03:13:12 +00:00
sendmail Join the 21st century: Cryptography is no longer an optional component 2004-08-06 07:27:08 +00:00
setfmac Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
setkey
setpmac Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
sicontrol Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
sliplogin Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
slstat Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
smbmsg Markup nit picking. 2004-07-09 06:16:43 +00:00
spkrtest
spray
sysinstall Fix installing from SCSI tape drives by catching up device names with 2004-08-16 03:13:12 +00:00
syslogd Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
tcpdchk
tcpdmatch
tcpdump Join the 21st century: Cryptography is no longer an optional component 2004-08-06 07:27:08 +00:00
timed Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
traceroute
traceroute6 mdoc(7) fixes. 2004-07-07 19:57:16 +00:00
trpt Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
tzsetup Update wording regarding geography to match the man page and web site. 2004-08-10 05:34:23 +00:00
ugidfw Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
usbd Fix 'camcontrol rescan' syntax and use the proper indentation for 2004-07-15 07:34:14 +00:00
usbdevs
vidcontrol
vipw Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
vnconfig
watch By default, the watch utility will attempt to open /dev/snp0, if 2004-08-10 01:49:46 +00:00
watchdogd Disable memory locking that could keep watchdogd from deadlocking itself 2004-07-28 22:13:04 +00:00
wicontrol
wlconfig Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
yp_mkdb
ypbind Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
yppoll
yppush Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software 2004-08-07 04:28:56 +00:00
ypserv Sort SEE ALSO references (in dictionary order, ignoring case). 2004-07-04 20:55:50 +00:00
ypset
zic Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
zzz
Makefile Temporarily disable kernbb utility. It has to learn about new gcov data 2004-07-28 07:13:55 +00:00
Makefile.inc