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

cvs@GRAND.CENTRAL.ORG cvs@GRAND.CENTRAL.ORG
Sun, 03 Oct 2004 09:34:28 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_flushvol.c afsd_service.c lanahelper.cpp lanahelper.h 
Log Message:
DELTA win-power-mgmt-flush-test-20041003
AUTHOR jaltman@mit.edu

The windows power management code responds to a request to suspend or
hibernate by performing a "fs flushvol" as the logged in user on each
of the SMB/CIFS mounted shares.  This can be very time consuming if 
the cell servers cannot be reached.

This patch adds a test to ensure that there is at least one network
adapter in the machine which is not a loopback adapter.  

While developing this patch other areas of concern have been raised.
The power management code waits a fixed period of time based upon
the hard dead timeout before allowing the suspend/hibernate to continue.
This allows the machine to shutdown even if there are active flush 
operations being performed.  This defeats the benefit of performing
the flush at all.

A better mechanism could be developed if the functions called via
cm_IoctlFlushVolume returned and checked error codes.  Then it might
be possible to abandon the flush operation if a Server Not Reachable
state was obtained.  

The power management flush operations will also not work on Terminal
Server.  This would be important in the case where a terminal server
is shutting down due to a switch over to a UPS.  The reason it does
not work on Terminal Server is that there is that it is not possible
for afsd_service.exe to enumerate the SMB/CIFS shares and impersonate
the individual logged in users.

It would be preferred for there to be a new cm_FlushAll() function
implemented which was not dependent on the use of the ioctl mechanism
for the purpose of identifying a volume ID or a user ID.



--- DELTA config follows ---
win-power-mgmt-flush-test-20041003 openafs/src/WINNT/afsd/afsd_flushvol.c 1.6 1.7
win-power-mgmt-flush-test-20041003 openafs/src/WINNT/afsd/afsd_service.c 1.28 1.29
win-power-mgmt-flush-test-20041003 openafs/src/WINNT/afsd/lanahelper.cpp 1.8 1.9
win-power-mgmt-flush-test-20041003 openafs/src/WINNT/afsd/lanahelper.h 1.3 1.4