]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fixed error handling after a seek error that can't happen. When the
authorbde <bde@FreeBSD.org>
Sat, 18 Jul 1998 03:15:33 +0000 (03:15 +0000)
committerbde <bde@FreeBSD.org>
Sat, 18 Jul 1998 03:15:33 +0000 (03:15 +0000)
commit7466f92c1a75cdfc614e9b0f5eccf1f8afb31d06
tree85f65f73eb936bb47402504720908182bba6d999
parent7ff39f1b603550fcd7c3980bf1b03393ca35dd0d
Fixed error handling after a seek error that can't happen.  When the
controller reports a successful seek, it is very unlikely to report
seeking to a cylinder other than the one requested, but we check for
this, and botched the error handling for the requested_cylinder != 0
case.  This error happened when the bug fixed in rev.1.52 of <sys/buf.h>
caused the head of buffer queue to change to one starting on a different
cylnder - the requested cylinder was found, but it wasn't what we
thought we requested.  The fix is simply to arrange to reset the state
machine.

Corruption of the buffer queue seems to only have been a problem in the
floppy driver.  Other drivers dequeue the head of the queue before doing
physical i/o on it, so the corruption at worse broke the elevator sort
order.  Dequeueing breaks it anyway.
sys/dev/fdc/fdc.c
sys/i386/isa/fd.c
sys/isa/fd.c