Windows: Suspend/Resume for afsd_service
authorJeffrey Altman <jaltman@your-file-system.com>
Fri, 9 Dec 2011 23:40:42 +0000 (18:40 -0500)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 10 Dec 2011 14:44:32 +0000 (06:44 -0800)
commit41d145b303d61aa6f8f336e4d66748dea860d08f
treed6fdb88d63eb65e5aa5eb4a583e4997c16797565
parent6d6d52e18f3bd537331de6021a0fcc2e96fc48db
Windows: Suspend/Resume for afsd_service

The power mgmt events are received in the service.  The service
can block all requests from the redirector from being processed
until it knows that it is safe to process them.

The service will receive a SERVICE_CONTROL_APMSUSPEND just before
the system goes to sleep.  The service has two seconds to respond
and it uses that time to attempt to send RXAFS_GiveUpAllCallBacks
to all file servers as an rx_multi with no wait.  It also marks
all servers down and updates the callback expirations to be just
after the servers were marked down so that they will be forced to
be refreshed when the server is marked up.

Upon resume the service receives two events.  First,
SERVICE_CONTROL_APMRESUMEAUTOMATIC which is used to perform an
SMB lan adapter change detection and perform a probe of all down
servers.  The second, SERVICE_CONTROL_APMRESUMESUSPEND is used to
resume SMB listeners, perform a 2nd lan adapter change check (just
in case), check the status of all down servers in additional
networks have come up, and finally resume processing of redirector
requests.

With these changes no special logic in the redirector is required.

Change-Id: I5405ecab754dca04f34afb024c4dacc3fe089088
Reviewed-on: http://gerrit.openafs.org/6243
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/WINNT/afsd/afsd_service.c
src/WINNT/afsrdr/common/AFSUserPrototypes.h
src/WINNT/afsrdr/user/RDRInit.cpp