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

cvs@GRAND.CENTRAL.ORG cvs@GRAND.CENTRAL.ORG
Thu, 28 Jun 2007 00:04:22 EDT


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

Modified Files:
	afsd_service.c cm_callback.c cm_callback.h cm_scache.c 
	cm_scache.h cm_server.c cm_server.h 
Log Message:
DELTA windows-give-up-callbacks-20070627
AUTHOR jaltman@secure-endpoints.com

This large patch adds support for giving up callbacks in response to three
events:

 1. power management suspend

 2. power management shutdown

 3. stat cache object recycling

The third item is submitted as a condition compilation if GIVE_UP_CALLBACKS
is defined.  Properly handing callback give ups and the associated race 
conditions with revokes and fetch status requests requires a great deal of
over head.  The first attempt used one GiveUpCallBacks RPC for each callback
that was being dropped as the stat cache object was recycled.  This resulted
in a 27% performance drop in the MIT stress test.  The code that is being
committed maintains a callback give up list on each server object.  The 
callback is added to the list as the callbacks are dropped and then they
are sent to the server in bulk by the background daemon thread if the 
server is known to be UP after a ping.  Logic is added to the 
EndCallbackRequest and CallbackRevoke operations to ensure that race 
conditions are addressed.  With all of this, there is a 17% performance drop
in the MIT stress test.

As a result, it is my conclusion that the client side costs associated with
optimizing the load on the server are simply too high.  I am committing this
code to ensure that it is not lost.  I will remove this support in the next
patch while leaving the support for giving up all callbacks in response
to suspend and shutdown events.



--- DELTA config follows ---
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/afsd_service.c 1.62 1.63
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_callback.c 1.55 1.56
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_callback.h 1.7 1.8
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_scache.c 1.72 1.73
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_scache.h 1.34 1.35
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_server.c 1.34 1.35
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_server.h 1.20 1.21