OpenAFS CVS Commit: openafs/src/WINNT/client_osi by jaltman

cvs@GRAND.CENTRAL.ORG cvs@GRAND.CENTRAL.ORG
Thu, 25 May 2006 13:18:48 EDT


Update of /cvs/openafs/src/WINNT/client_osi
In directory GRAND.CENTRAL.ORG:/home/jaltman/openafs/cvs-1-4/src/WINNT/client_osi

Modified Files:
      Tag: openafs-stable-1_4_x
	libosi.def osiqueue.c osiqueue.h osisleep.c 
Log Message:
DELTA STABLE14-windows-head-tail-queue-removal-20060525
AUTHOR jaltman@secure-endpoints.com

while investigating the cause of the delayed write errors it was observed
that all of the sleep queues are LIFO.  This has the side effect of
encouraging starvation.  Changing the queues to FIFOs revealed a serious
problem affecting the use of all queues which use both head and tail
pointers.  The removal function osi_QRemove does not take a tail pointer
and therefore the pointer is always left hanging.  If the number of elements
ever drops to zero the queue becomes corrupted.

Added osi_QRemoveHT to be used whenever head and tail pointers are used.
Updated all callers in afsd.


--- DELTA config for openafs-stable-1_4_x follows ---
STABLE14-windows-head-tail-queue-removal-20060525 openafs/src/WINNT/client_osi/libosi.def 1.3 1.3.2.1
STABLE14-windows-head-tail-queue-removal-20060525 openafs/src/WINNT/client_osi/osiqueue.c 1.3 1.3.2.1
STABLE14-windows-head-tail-queue-removal-20060525 openafs/src/WINNT/client_osi/osiqueue.h 1.2 1.2.2.1
STABLE14-windows-head-tail-queue-removal-20060525 openafs/src/WINNT/client_osi/osisleep.c 1.2 1.2.2.1