]> git.michaelhowe.org Git - packages/o/openafs.git/commit
DEVEL15-windows-head-tail-queue-removal-20060525
authorJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 1 Jun 2006 16:39:51 +0000 (16:39 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 1 Jun 2006 16:39:51 +0000 (16:39 +0000)
commit3b3f0704b1bf85c00599f5e77b908897eca75cf4
tree25caea97d4694757ddcef4ef10b663503213fd76
parent4b6e5b7e695b15d391d79730b280dfd0d4cee8ab
DEVEL15-windows-head-tail-queue-removal-20060525

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.

(cherry picked from commit c1e79275079cfa68d73cc3a008c3fb3b201f1068)
src/WINNT/afsd/cm_aclent.c
src/WINNT/afsd/cm_scache.c
src/WINNT/afsd/cm_vnodeops.c
src/WINNT/client_osi/libosi.def
src/WINNT/client_osi/osiqueue.c
src/WINNT/client_osi/osiqueue.h
src/WINNT/client_osi/osisleep.c