Index: openafs/doc/txt/winnotes/afs-changes-since-1.2.txt
diff -c openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.13.2.19 openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.13.2.22
*** openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.13.2.19	Sun Jan 30 23:24:05 2005
--- openafs/doc/txt/winnotes/afs-changes-since-1.2.txt	Thu Mar 17 12:51:16 2005
***************
*** 1,7 ****
  Since 1.3.77:
!   * The list of ACL entries was becoming corrupted because the function
!     which obtained a free entry was doing so without the appropriate lock
!     being held.
  
    * Changed the default @sys name list to "x86_win32 i386_w2k i386_nt40"
      for 32-bit x86 systems.  The default for itanium will be "ia64_win64"
--- 1,121 ----
  Since 1.3.77:
!   * Updated CellServDB to Public CellServDB 16 Mar 2005
! 
!   * Fixed DNS AFSDB queries to ensure that "csail" cannot be
!     misinterpretted as "csail.mit.edu" when the resolver 
!     is configured to append ".mit.edu" to failed DNS queries.
! 
!   * Fixed another case in which the client would replace connections
!     to the host when it was not necessary.  In this case the 
!     situation would occur if cryptall was on and the connections
!     were unauthenticated due to lack of an appropriate token.
! 
!   * OpenAFS for Windows has failed to work at sites which are 
!     utilizing a cross-realm trust between an MIT/Heimdal realm
!     and a multi-domain Windows forest when the workstation being
!     accessed is not located in the root domain.  This is caused 
!     by a bug in the workstation which was triggered after the 
!     introduction of Windows 2003 Server.  When the bug is triggered,
!     the workstation attempts to authenticate users to afsd_service.exe
!     by contacting the Domain Controller instead of using the 
!     LSA loopback authentication mechanism.
! 
!     One of the reasons this bug occurs is because the workstation    
!     does not have a reliable way of knowing that the service whose
!     netbios name is "AFS" is located on the workstation.  This will
!     be fixed starting in Longhorn Beta 1 by Microsoft.  The 
!     "BackConnectionHostNames" registry value will be used to 
!     indicate that the authentications to that service name should
!     be performed using the loopback authentication mechanism.
! 
!     In the meantime, when Logon Caching is enabled, we can force
!     afsd_service.exe to authenticate using the logon cache before
!     contacting the Domain Controller.  This will work with both
!     password and smart card based logons.  
! 
!   * The allDown logic in cm_ConnByMServers() was wrong.  The allDown
!     flag should not be cleared if a volume's server reference is 
!     marked as "offline".  In the case where all of the volume's 
!     servers are either "down" or the volumes are "offline", we want
!     cm_Analyze() to process the condition as CM_ERROR_ALLOFFLINE
!     instead of as CM_ERROR_TIMEDOUT.  In fact, CM_ERROR_TIMEDOUT
!     should never occur in practice.
! 
!     In the case of CM_ERROR_ALLOFFLINE, cm_Analyze() will sleep for
!     5 seconds, clear the server down and volume busy flags, and 
!     then force an update from the VLDB.  This allows the client to 
!     update the location of a volume if the reason for it being 
!     marked offline is because it is being moved.  Calls to 
!     cm_ConnByMServers() will be retried either until success or
!     the RDRtimeout period is reached.
! 
!   * Correct the Power Management code behavior in response to 
!     Standby, Suspend, and Shutdown events.  Instead of flushing the
!     buffers associated with the mounted SMB submounts, simply write
!     all buffers which are marked dirty.
! 
!   * Added support for "TheseCells" to afslogon.dll.  "TheseCells"
!     provides a list of cells other than the default cell for which
!     tokens should be obtained using the default Kerberos principal.
!     This functionality is logon domain specific and is only available
!     when using KFW for authentication.
! 
!   * Fixed FindNext Invalid Handle error caused by over agressive 
!     attempts at garbage collecting dirSearch entries when the 
!     dirSearch ID wraps from the maximum value to 1.
! 
!   * Add support for registry defined server preferences for VLDB and 
!     File servers.  See registry.txt for details.
! 
!   * Increased default cache size to 96MB and default number of cache
!     entries to 10,000.
! 
!   * Fixed refCount leaks related to directory lookups and pioctl calls.
! 
!   * Callbacks revoked during a race condition with an attempt to 
!     obtain the same callback no longer result in an inaccessible
!     stat cache entry.
! 
!   * New command line tool:
! 
!         afsdacl : Set or reset the DACL to allow starting or stopping
!              the afsd service by any ordinary user.
! 
!         Usage : afsdacl [-set | -reset] [-show]
!               -set   : Sets the DACL
!               -reset : Reset the DACL
!               -show  : Show current DACL (SDSF)
! 
!   * IP addresses are no longer queried once at startup.  Instead IP
!     addresses are obtained as needed.   Loopback adapter addresses are
!     no longer published to the server.
! 
!   * Pay attention to the MIT KFW registry configuration for automatic
!     importation of MSLSA credentials. (SOFTWARE\MIT\Leash32,MsLsaImport)
! 
!   * Fix (once again) case-sensitive comparisons which was apparently 
!     broken in 1.3.72.
! 
!   * Activate support for vos listvol -format
! 
!   * Population of the "AFS Client Admins" group failed on non-English
!     versions of Windows because the name of the "Administrators" group
!     is localized.  Now we lookup the name of the group by using the
!     Administrators Group Alias Relative ID.
! 
!   * Multiple cell token acquisition within afscreds.exe was broken in the 
!     case of Kerberos 5 cross realm authentication.  Instead of contacting
!     the KDC associated with the cell's realm, afscreds would obtain a 
!     token from the KDC of the user's realm.  This would result in
!     "invalid kvno errors" while authenticating to the AFS servers.  
!     Unauthenticated access would work.  The symptoms would vary based upon
!     whether or not the VLDB servers had been contacted using unauthenticated
!     connections prior to the user obtaining tokens.
! 
!   * The list of ACL entries was becoming corrupted.  It appears as if 
!     an ACL when it expires was not being appropriately cleaned up.  In
!     fact, it was left in the list of ACLs associated with the scache 
!     entry.
  
    * Changed the default @sys name list to "x86_win32 i386_w2k i386_nt40"
      for 32-bit x86 systems.  The default for itanium will be "ia64_win64"
***************
*** 18,28 ****
      STATUS_NOT_A_DIRECTORY instead of the expected 
      STATUS_OBJECT_PATH_NOT_FOUND.  This would cause the Windows SMB client
      to terminate the search for the DLL causing the execution of the 
!     application to fail.                                                                           
  
!   * Re-work the reference counting of smb_vc_t objects.  The references
      stored in the waiting locks were not counted.  This could result in
!     an assertion if the reference count drops below 0.
  
    * Correct deadlock condition in cm_EndCallbackGrantingCall which can
      be triggered if the volume referenced by the cm_scache_t object is
--- 132,178 ----
      STATUS_NOT_A_DIRECTORY instead of the expected 
      STATUS_OBJECT_PATH_NOT_FOUND.  This would cause the Windows SMB client
      to terminate the search for the DLL causing the execution of the 
!     application to fail.
  
!   * Rework the reference counting of smb_vc_t objects.  The references  
      stored in the waiting locks were not counted.  This could result in
!     an assertion if the reference count drops to zero.
! 
!   * "fs wscell" returns "Freelance.Local.Root" for the workstation cell
!     when running in freelance mode.
! 
!   * Added support for persistent caching of file contents, stat entries,
!     volume data, cell data, and name lookup data.  When the registry 
!     value, "NonPersistentCaching", is not defined or set to 0 the file 
!     specified by "CachePath" becomes a persistent cache file.   The 
!     size of the cache file is computed at run time.  It has a maximum
!     size of approximately 1.2GB.  The contents of the file will be 
!     validated according to the rules specified by the "ValidateCache"
!     registry value.  
! 
!   * Added support for UUIDs.  UUIDs are kept for as long as the 
!     cache file is intact.
! 
!   * Added cmdebug.exe and support cache manager debugging callback 
!     interfaces in afsd_service.exe.
! 
!     Usage: cmdebug -servers <server machine> [-port <IP port>] [-long] 
!                    [-addrs] [-cache] [-help]
!     Where: -long   print all info
!            -addrs  print only host interfaces
!            -cache  print only cache configuration
! 
!   * Symlinks to \\AFS\[all\]... will now be treated the same as 
!     symlinks to /afs/....   However, please use /afs/... as otherwise
!     the symlinks won't work on Unix.
!   
!   * Correct a problem with local CellID allocation for cells whose 
!     server list is obtained via DNS instead of a CellServDB file.  If
!     the DNS information expires the CellID assigned to the entry will
!     be changed.  This causes all of the cm_scache_t objects which refer
!     to the old cellID number to become useless.  Attempts to access 
!     files or directories with cm_scache_t objects using the old cellID
!     will fail since the server list cannot be obtained.
  
    * Correct deadlock condition in cm_EndCallbackGrantingCall which can
      be triggered if the volume referenced by the cm_scache_t object is
Index: openafs/doc/txt/winnotes/afs-install-notes.txt
diff -c openafs/doc/txt/winnotes/afs-install-notes.txt:1.11.2.11 openafs/doc/txt/winnotes/afs-install-notes.txt:1.11.2.14
*** openafs/doc/txt/winnotes/afs-install-notes.txt:1.11.2.11	Sun Jan 30 23:24:05 2005
--- openafs/doc/txt/winnotes/afs-install-notes.txt	Thu Mar 17 12:51:16 2005
***************
*** 1,4 ****
! OpenAFS for Windows 1.3.78 Installation Notes
  ---------------------------------------------
  
  The OpenAFS for Windows product was very poorly maintained throughout the 
--- 1,4 ----
! OpenAFS for Windows 1.3.80 Installation Notes
  ---------------------------------------------
  
  The OpenAFS for Windows product was very poorly maintained throughout the 
***************
*** 11,16 ****
--- 11,18 ----
  series but also attempts to enhance the functionality of the product to better 
  fit the usage model of today's users.  Several items standout.  
  
+ 0. The default AFSCache file is approximately 100MB.  This space is required 
+ in addition to the space allocated to OpenAFS binaries.
  
  1. The Kerberos 4 infrastructure on which the 1.2 series is reliant is no 
  longer secure.  Cross-realm Kerberos is very important in the AFS context and 
***************
*** 499,504 ****
--- 501,558 ----
  only the supported characters for the locale.
  
  
+ 31. As of 1.3.80 the AFS Cache file is stored by default at %TEMP%\AFSCache
+ in a persistent file marked with the Hidden and System attributes.  The 
+ persistent nature of the data stored in the cache file improves the 
+ performance of OpenAFS by reducing the number of times data must be read
+ from the AFS file servers.
+ 
+ 
+ 32. Integrated Login (as of 1.3.80) supports the ability to obtain tokens
+ for multiple cells.  See the "TheseCells" value in registry.txt.
+ 
+ 
+ 33. New command line tool:
+ 
+     afsdacl : Set or reset the DACL to allow starting or stopping
+          the afsd service by any ordinary user.
+ 
+     Usage : afsdacl [-set | -reset] [-show]
+           -set   : Sets the DACL
+           -reset : Reset the DACL
+           -show  : Show current DACL (SDSF)
+ 
+ 34. As of 1.3.80, the default @sys name list has been changed to 
+ "x86_win32 i386_w2k i386_nt40" for 32-bit x86 systems.  The default 
+ for itanium will be "ia64_win64" and "amd64_win64" for amd 64-bit 
+ processors.
+ 
+ 
+ 35. As of 1.3.80, symlinks to \\AFS[\all]\... will now be treated
+ the same as symlinks to /afs/...  However, please use /afs/... as
+ the Windows UNC form will not work on Unix.
+ 
+ 
+ 36. As of 1.3.80, OpenAFS for Windows implements the Cache Manager
+ Debugging RPC Interface.  The CM debugger can be queried with 
+ cmdebug.exe.
+ 
+ Usage: cmdebug -servers <server machine> [-port <IP port>] [-long]
+                [-addrs] [-cache] [-help]
+ Where: -long   print all info
+        -addrs  print only host interfaces
+        -cache  print only cache configuration
+ 
+ 37.  If you are a site which utilizes MIT/Heimdal Kerberos principals
+ to logon to Windows via a cross-realm relationship with a multi-domain
+ Windows forest, you must enable Windows logon caching unless the 
+ workstation is Longhorn Beta 1 or later.
+ 
+ 
+ 38. VLDB and File Server Preferences can now be provided initial 
+ values using registry keys.  This is useful for managed machines in a
+ Windows domain which are centrally located (e.g., in a computing
+ lab.)  See registry.txt for details on the "Server Preferences" keys.
  
  ------------------------------------------------------------------------
  
Index: openafs/doc/txt/winnotes/afs-integration.txt
diff -c /dev/null openafs/doc/txt/winnotes/afs-integration.txt:1.1.2.1
*** /dev/null	Mon Mar 21 13:14:46 2005
--- openafs/doc/txt/winnotes/afs-integration.txt	Fri Mar 11 02:22:30 2005
***************
*** 0 ****
--- 1,200 ----
+ How to determine if OpenAFS is installed?
+ 
+ When the OpenAFS Client Service is installed there will be several 
+ registry keys created:
+ 
+   HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon
+      "ImagePath" = "path to afsd_service.exe"
+ 
+   HKLM\SOFTWARE\TransarcCorporation\AFS Client\CurrentVersion
+      "PathName" = "the path to the client installation directory"
+      "MajorVersion" 
+      "MinorVersion"
+      "VersionString"
+ 
+ BOOL IsAFSServerInstalled (void)
+ {
+    BOOL fInstalled = FALSE;
+    TCHAR szKey[] = TEXT("HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon");
+    LPCTSTR pch = lstrchr (szKey, TEXT('\\'));
+    HKEY hk;
+    
+    if (RegOpenKey (HKEY_LOCAL_MACHINE, &pch[1], &hk) == 0)
+    {
+       fInstalled = TRUE;
+       RegCloseKey (hk);
+    }
+ 
+    return fInstalled;
+ }
+ 
+ How to determine if OpenAFS is active?
+ 
+ The AFS Client Service is normally started automatically at system boot.
+ The state of the service may be queried by asking the Windows Service 
+ Manager.
+ 
+ BOOL IsAFSServiceRunning (void)
+ {
+     SERVICE_STATUS Status;
+     memset (&Status, 0x00, sizeof(Status));
+     Status.dwCurrentState = SERVICE_STOPPED;
+ 
+     SC_HANDLE hManager;
+     if ((hManager = OpenSCManager (NULL, NULL, GENERIC_READ)) != NULL)
+     {
+         SC_HANDLE hService;
+         if ((hService = OpenService (hManager, TEXT("TransarcAFSDaemon"), GENERIC_READ)) != NULL)
+         {
+             QueryServiceStatus (hService, &Status);
+             CloseServiceHandle (hService);
+         }
+         CloseServiceHandle (hManager);
+     }
+     return (Status.dwCurrentState == SERVICE_RUNNING);
+ }
+ 
+ How to determine the AFS UNC Service Name?
+ 
+ The local UNC service name registered by the OpenAFS Client Service SMB/CIFS 
+ Server depends on whether or not a Microsoft Loopback Adapter has been 
+ installed and the contents of a registry value.  The loopback adapter is 
+ important because if the service cannot bind itself to a loopback adapter 
+ then the registered SMB/CIFS service name must be unique to the WINS name
+ space.  When the loopback adapter is installed, a globally common name such
+ as "AFS" can be used.
+ 
+ If the loopback adapter is installed the UNC server name will be the value at:
+ 
+   HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
+     REG_SZ/REG_EXPAND_SZ  "NetbiosName"
+ 
+ If this value is not present, the default is "AFS".
+ 
+ When the loopback adapter is not installed the UNC name will be:
+ 
+   %COMPUTERNAME%-%NetbiosName%
+ 
+ if the Computer Name is "MYHOST" and the Netbios Name is "AFS" then
+ the UNC server name will be: 
+ 
+   MYHOST-AFS
+ 
+ At the moment there is no readily available code exported by a library to 
+ determine if the loopback adapter is installed or not.  What I will do if
+ someone requests it is add a new AFS pioctl operation which will return
+ the in use UNC Server Name.
+ 
+ 
+ How to determine the AFS unix mount point path?
+ 
+ On Unix systems the local mount point of the AFS file system is usually "/afs".
+ Some organizations have their own custom local mount point locations.  To 
+ determine what the locally configured unix mount point is for interpretting
+ Unix style paths there is a registry value:
+ 
+   HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
+     REG_SZ "MountRoot"
+ 
+ If this value does not exist the default value is "/afs".
+ 
+ What are AFS pioctl() operations and how do I call them?
+ 
+ AFS pioctl() operations are IPCs which can be used to communicate with the
+ AFS Client Service for the purposes of querying or changing the state of
+ the service.
+ 
+ The pioctl() function has a prototype of:
+ 
+ struct ViceIoctl {
+     long in_size;
+     long out_size;
+     void *in;
+     void *out;
+ };
+ 
+ long pioctl(char *pathp, long opcode, struct ViceIoctl *blobp, int follow);
+ 
+ and can be loaded from the library "afsauthent.dll" at runtime.  The default
+ calling convention is used.
+ 
+ 
+ How to test to see if a PATH is within AFS?
+ 
+ Given an arbitrary file path, you can test to see if the path is in the AFS
+ file system with the following function.  It asks the AFS Client Service to 
+ return the name of the cell in which the path exists.  If the cell name cannot
+ be found, the path is not in the AFS file space.
+ 
+ BOOL IsPathInAFS(const CHAR *strPath)
+ {
+     struct ViceIoctl blob;
+     char cellname[256];
+     int code;
+ 
+     blob.in_size = 0;
+     blob.out_size = sizeof(cellname);
+     blob.out = cellname;
+ 
+     code = pioctl((LPTSTR)((LPCTSTR)strPath), VIOC_FILE_CELL_NAME, &blob, 1);
+     if (code)
+         return FALSE;
+     return TRUE;
+ }
+ 
+ 
+ What are AFS cells, volumes and mount points?
+ 
+ The AFS file system consists of a series of administrative domains called 
+ "cells" each of which contain two or more volumes.  A volume is a file system
+ unit which contains files, directories, mount points, symlinks and hard
+ links.
+ 
+ Each cell has a minimum of two volumes.  When an AFS client connects to a 
+ cell it mounts the cell's "root.afs" volume at the local afs mount point path.
+ Each "root.afs" volume contains one or more mount points which allow the 
+ AFS client to other volumes in both in the current cell as well as other 
+ cells.  There are two types of mount points: read-only and read-write.  
+ By following a read-only mount point the client can obtain data from any
+ of the equivalent read-only volume replicas.  By following a read-write mount
+ point the client is restricted to the one and only read-write copy of the
+ volume.  Periodically replicated volumes have their read-write copy "released"
+ which results in a synchronization with the read-only copies.
+ 
+ By convention the first volume of every cell to contain real data is called 
+ "root.cell".  The name of the read-only mount point which joins the "root.afs"
+ volume to the "root.cell" volume is the name of the cell.  The name of the 
+ read-write mount point is the name of the cell prefaced by a dot.  For 
+ example, the "athena.mit.edu" cell's "root.afs" volume will contain mount points
+ such as
+ 
+         "athena.mit.edu"  -> "#athena.mit.edu:root.cell" 
+         ".athena.mit.edu" -> "%athena.mit.edu:root.cell" 
+ 
+ The '#' indicates a read-only mount point and the '%' indicates a read-write 
+ mount point.  The mount points are not limited to the local cell so additional 
+ mount points might be included such as:
+ 
+         "andrew.cmu.edu" -> "#andrew.cmu.edu:root.cell" 
+         "sipb.mit.edu"   -> "#sipb.mit.edu:root.cell"
+ 
+ The mount points appear as directory entries to the operating system.
+ 
+ Volumes can also store files, hard links to files, and symlinks to files.  
+ 
+ On Windows, hardlinks can be created and destroyed using the CreateHardLink() 
+ and DeleteFile() Win32 APIs.  
+ 
+ Creating, Listing and Destroying symlinks and mount points is performed by
+ the user via the OpenAFS provided command line tools: fs.exe and symlink.exe.
+  
+   symlink make <name> <to>
+   symlink list <name>
+   symlink rm <name>
+ 
+   fs mkmount <dir> <vol> [<cell>] [-rw]
+   fs lsmount <dir>+
+   fs rmmount <dir>+
+ 
+ These operations are performed via pioctl calls. 
+ 
Index: openafs/doc/txt/winnotes/afs-issues.txt
diff -c openafs/doc/txt/winnotes/afs-issues.txt:1.8.2.9 openafs/doc/txt/winnotes/afs-issues.txt:1.8.2.11
*** openafs/doc/txt/winnotes/afs-issues.txt:1.8.2.9	Tue Dec  7 01:03:14 2004
--- openafs/doc/txt/winnotes/afs-issues.txt	Thu Mar 17 12:51:16 2005
***************
*** 1,4 ****
! This file is a rough list of known issues with the 1.3.72 release of OpenAFS
  on Windows.  This list is not complete.  There are probably other issues 
  which can be found in the RT database or on the mailing list.
  
--- 1,4 ----
! This file is a rough list of known issues with the 1.3.80 release of OpenAFS
  on Windows.  This list is not complete.  There are probably other issues 
  which can be found in the RT database or on the mailing list.
  
***************
*** 10,16 ****
  (3a) IP address changes cause the service to terminate due to an assertion 
  in smb_Listener() thread.
  
! (3b) New IP addresses do not get bound
  
  (3c) Loopback adapter hack:
    (i)   prevents use of AFS Gateway 
--- 10,16 ----
  (3a) IP address changes cause the service to terminate due to an assertion 
  in smb_Listener() thread.
  
! (3b) New IP addresses do not get bound to the SMB server
  
  (3c) Loopback adapter hack:
    (i)   prevents use of AFS Gateway 
***************
*** 29,34 ****
--- 29,38 ----
  and RX protocol operations. There was also an issue with large numbers of 
  page faults which have since been fixed.
  
+ Things are not quite this bad anymore.  We are 10% slower than OpenAFS on
+ Linux but we could still be doing quite a bit faster if we were using an
+ IFS.
+ 
  (7) File termination differences between Win9x and nt/w2k/xp (Jim Peterson)
  
  (8) How to silence "Explorer" when the mapped drive is not available?
***************
*** 55,63 ****
  (12c) If network is not available must store the username and password 
        somewhere until such time as the network starts.
  
! (13) Loopback adapter is not always installed with bindings to "File and 
!      Printer Sharing for Microsoft Networks" or "Client for Microsoft 
!      Networks".   If these are not bound then SMB names will successfully
       be published to a list of zero which causes the AFS not to function.
       We need a way to test whether the Loopback adapter is properly bound
       so we know if it is safe to use.  Actually, it is worse.  Even with
--- 59,67 ----
  (12c) If network is not available must store the username and password 
        somewhere until such time as the network starts.
  
! (13) Loopback adapter is not always installed without bindings to "File and 
!      Printer Sharing for Microsoft Networks" and with bindings to "Client for Microsoft 
!      Networks".   If these are not bound correct then SMB names will successfully
       be published to a list of zero which causes the AFS not to function.
       We need a way to test whether the Loopback adapter is properly bound
       so we know if it is safe to use.  Actually, it is worse.  Even with
***************
*** 103,124 ****
       and per-machine settings.  All of the new registry items need to 
       be added to the UI
  
! (25) Thread initialization versus Global Drive Mapping.  There is no
!      mechanism in the afsd_init.c to ensure that all of the threads 
!      complete initializing in the correct sequence.  In the case of 
!      Global Drive Maps this is a problem because the Global Drive Maps
!      can be executed prior to the completion of the SMB registration
!      and service thread initialization.
! 
! (26) CIFS Remote Administration Protocol implementation is incomplete.
       Notifications are not made to requestors when the view of a file
       or folder changes due to token acquisition; token expiration; or
       token destruction
  
! (27) The Cache Manager Flush routines do not return or check error 
!      codes.       
! 
! (28) Remove submount creation as a side effect of AFS drive mapping.
       
       The AFS Submount is effectively a server side alias for a path 
       located in the AFS space.  This alias is exported by the AFS 
--- 107,118 ----
       and per-machine settings.  All of the new registry items need to 
       be added to the UI
  
! (25) CIFS Remote Administration Protocol implementation is incomplete.
       Notifications are not made to requestors when the view of a file
       or folder changes due to token acquisition; token expiration; or
       token destruction
  
! (26) Remove submount creation as a side effect of AFS drive mapping.
       
       The AFS Submount is effectively a server side alias for a path 
       located in the AFS space.  This alias is exported by the AFS 
***************
*** 135,171 ****
       or by the new AFS Client Service Administration tool when executed 
       by an authorized user.
  
- (29) Add support for multi-homed servers
- 
  
  -------------------------------------------------------------------------
  List of unfunded projects:
  
     1. No longer use AFS Client Service "cell" as the default cell for individual users
!    2. Re-write afsd_service.exe to perform synchronized thread startup and shutdown.  
!       Currently there is no synchronization of thread creation which results in timing 
!       conflicts; and there is no attempt to cleanly shutdown the service which causes 
!       problems when restarting and prevents the implementation of a persistent cache
!    3. Implement a persistent cache (requires item 2)
!    4. Prevent panic situation when the root.afs volume is not reachable and 
        the AFS Client Server is not using Freelance mode
!    5. Prevent panic situation when the IP address to which the SMB server is bound is removed 
        from the local machine's network configuration
!    6. Add support for Named Pipes within the afs filesystem
        (This is not currently a supported feature of AFS; it will require 
        changes to the servers as well as the clients.)
!    7. Re-write afscreds.exe to support:
           1. choosing between Kerberos 5 and Kerberos 4 on a per principal basis
           2. providing users with the ability to map multiple cells to a single principal
           3. providing change password functionality on a per principal basis
           4. no longer include drive mapping
           5. configuration of afscreds startup options in shortcut
!    8. Re-write afs_config.exe to be only "per user" functionality which does not require admin 
        privileges
           1. default cell and principal for the user
           2. drive mappings but no submounts
           3. visibility of afs creds and setting of afs creds startup options
!    9. Create new afs_admin.exe tool to be installed in the administrator folder (or use MMS) 
        which contains
           1. afs client service cell name
           2. integrated logon configuration
--- 129,158 ----
       or by the new AFS Client Service Administration tool when executed 
       by an authorized user.
  
  
  -------------------------------------------------------------------------
  List of unfunded projects:
  
     1. No longer use AFS Client Service "cell" as the default cell for individual users
!    2. Prevent panic situation when the root.afs volume is not reachable and 
        the AFS Client Server is not using Freelance mode
!    3. Prevent panic situation when the IP address to which the SMB server is bound is removed 
        from the local machine's network configuration
!    4. Add support for Named Pipes within the afs filesystem
        (This is not currently a supported feature of AFS; it will require 
        changes to the servers as well as the clients.)
!    5. Re-write afscreds.exe to support:
           1. choosing between Kerberos 5 and Kerberos 4 on a per principal basis
           2. providing users with the ability to map multiple cells to a single principal
           3. providing change password functionality on a per principal basis
           4. no longer include drive mapping
           5. configuration of afscreds startup options in shortcut
!    6. Re-write afs_config.exe to be only "per user" functionality which does not require admin 
        privileges
           1. default cell and principal for the user
           2. drive mappings but no submounts
           3. visibility of afs creds and setting of afs creds startup options
!    7. Create new afs_admin.exe tool to be installed in the administrator folder (or use MMS) 
        which contains
           1. afs client service cell name
           2. integrated logon configuration
***************
*** 180,203 ****
          11. network configuration
          12. miscellaneous
          13. need to add support for all of the new registry values since 1.2.8
!   10. Identify why 16-bit DOS applications executed out of AFS fail
!   11. Add support for configurable Icon file representing AFS folders within the Explorer Shell
!   12. Documentation Documentation Documentation
!   13. Large File support (> 2GB) in SMB/CIFS client
!   14. Integrate KFW installation into the NSIS and MSI installers
!   15. Add support for record locking to AFS (requires changes to the servers)
!   16. Unicode enable the SMB/CIFS server.  OEM Code Pages: 
        1. prevent the use of interoperable file names
        2. force the use of paths no longer than 256 characters
        3. force share names to be no longer than 13 characters
        4. restrict authentication to ASCII only names and passwords
!   17. Complete implementation of CIFS Remote Administration Protocol
!   19. Add support for SMB/CIFS Digital Signatures
!   19. Development of afsmap.exe tool to provide AFS aware NET USE functionality
        afsmap.exe <drive> <afs-path> [/PERSISTENT]
        afsmap.exe <drive> <unc-path> [/PERSISTENT]
        afsmap.exe <drive> /DELETE
!   20. Missing SMB/CIFS functions: 
          Find
          FindUnique
          FindClose
--- 167,190 ----
          11. network configuration
          12. miscellaneous
          13. need to add support for all of the new registry values since 1.2.8
!    8. Identify why 16-bit DOS applications executed out of AFS fail
!    9. Add support for configurable Icon file representing AFS folders within the Explorer Shell
!   10. Documentation Documentation Documentation
!   11. Large File support (> 2GB) in SMB/CIFS client
!   12. Integrate KFW installation into the NSIS and MSI installers
!   13. Add support for record locking to AFS (requires changes to the servers)
!   14. Unicode enable the SMB/CIFS server.  OEM Code Pages: 
        1. prevent the use of interoperable file names
        2. force the use of paths no longer than 256 characters
        3. force share names to be no longer than 13 characters
        4. restrict authentication to ASCII only names and passwords
!   15. Complete implementation of CIFS Remote Administration Protocol
!   16. Add support for SMB/CIFS Digital Signatures
!   17. Development of afsmap.exe tool to provide AFS aware NET USE functionality
        afsmap.exe <drive> <afs-path> [/PERSISTENT]
        afsmap.exe <drive> <unc-path> [/PERSISTENT]
        afsmap.exe <drive> /DELETE
!   18. Missing SMB/CIFS functions: 
          Find
          FindUnique
          FindClose
***************
*** 205,220 ****
          WriteBulk       
          WriteBulkData
          Tran2::SessionSetup
!   21. StoreBehind mode is not implemented.  Or more correctly, all data is
        written directly to the server and is not cached.  Writes invalidate
        the local cache entries which are then read back from the server.
!   22. The Power Management Flush Cache code does not work on Terminal 
!       Server nor does it always successfully flush all of the dirty buffers
!       to the AFS servers before suspend/hibernate operations occur.
!   23. Develop an optional Installable File System replacement for the SMB/CIFS 
        Server.
!   24. Add support for storing Extended Attributes on files
!   25. Add support for storing Windows ACLs on files
!   26. Remove submount creation as a side effect of drive creation
!   27. Finish conversion from string.h to strsafe.h for VS.NET 2005
!   28. Add support for multi-homed servers
--- 192,204 ----
          WriteBulk       
          WriteBulkData
          Tran2::SessionSetup
!   19. StoreBehind mode is not implemented.  Or more correctly, all data is
        written directly to the server and is not cached.  Writes invalidate
        the local cache entries which are then read back from the server.
!   20. Develop an optional Installable File System replacement for the SMB/CIFS 
        Server.
!   21. Add support for storing Extended Attributes on files
!   22. Add support for storing Windows ACLs on files
!   23. Remove submount creation as a side effect of drive creation
!   24. Finish conversion from string.h to strsafe.h for VS.NET 2005
! 
Index: openafs/doc/txt/winnotes/msi-deployment-guide.txt
diff -c openafs/doc/txt/winnotes/msi-deployment-guide.txt:1.2.2.1 openafs/doc/txt/winnotes/msi-deployment-guide.txt:1.2.2.2
*** openafs/doc/txt/winnotes/msi-deployment-guide.txt:1.2.2.1	Wed Dec  8 04:58:49 2004
--- openafs/doc/txt/winnotes/msi-deployment-guide.txt	Fri Mar 11 01:58:34 2005
***************
*** 6,19 ****
       Contents
  
       1.  Introduction
!      1.1 Requirements
  
       2.	 Configuration options
!      2.1 Configurable properties
!      2.2 Existing registry values
  
       3.	 Additional resources
-      3.1 Example
  
       4.	 Upgrades
  
--- 6,20 ----
       Contents
  
       1.  Introduction
!      1.1   Requirements
  
       2.	 Configuration options
!      2.1   Configurable properties
!      2.2   Existing registry values
!      2.3   Replacing Configuration Files
!      2.4   Adding Domain Specific Registry Keys
  
       3.	 Additional resources
  
       4.	 Upgrades
  
***************
*** 30,41 ****
      to deploy OpenAFS through Group Policy.
  
      This document provides a guide for authoring transforms used to
!     customize the MSI package for a particular organization.
!     Although many settings can be deployed via transforms, in an
!     Active Directory environment it is advisable to deploy registry
!     settings and configuration files through group policy and/or
!     startup scripts so that machines where OpenAFS for Windows is
!     already installed will pick up these customizations.
  
  1.1 Requirements
  
--- 31,42 ----
      to deploy OpenAFS through Group Policy.
  
      This document provides a guide for authoring transforms used to
!     customize the MSI package for a particular organization.  Although 
!     many settings can be deployed via transforms, in an Active 
!     Directory environment it is advisable to deploy registry settings
!     and configuration files through group policy and/or startup 
!     scripts so that machines where OpenAFS for Windows is already
!     installed will pick up these customizations.
  
  1.1 Requirements
  
***************
*** 45,81 ****
      releases. Not all releases support all the configuration options
      documented here.
  
!     Authoring a Windows Installer transform requires additional
      software for editing the MSI database tables and generating the
      transform from the modified MSI package.  ORCA.EXE and MSITRAN.EXE
!     which are included in the Windows Platform SDK (Windows Installer
      SDK) can be used for this purpose.
  
!     The schema for the MSI package is based on SCHEMA.MSI distributed
!     with the Platform SDK.
  
  ----------------------------------------------------------------------
  
  2.  Configuration Options
  
! 2.1 Configurable Properties
  
!     Most configurable properties correspond to registry keys or values.
!     To avoid duplication, only a reference to the relevant registry key
!     or value is given here.  For more details about the associated
!     semantics, please refer to registry.txt distributed with the
!     OpenAFS for Windows release.
  
!     These properties are, of course, found in the 'Property' table of
!     the MSI package.
  
!     For brevity the following nomenclature will be used to refer to
!     registry keys:
  
      Strings are quoted using single quotes (e.g. 'a string'). An empty
      string is denoted as ''.  Note that you can't author null values
!     into the 'Property' table.  To achieve this effect you'll have to
!     drop the relevant row.
  
      (Service parameters):
      [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]
--- 46,168 ----
      releases. Not all releases support all the configuration options
      documented here.
  
!     Authoring a "Windows Installer" transform requires additional
      software for editing the MSI database tables and generating the
      transform from the modified MSI package.  ORCA.EXE and MSITRAN.EXE
!     which are included in the Windows Platform SDK ("Windows Installer"
      SDK) can be used for this purpose.
  
!     For reference, the schema for the MSI package is based on
!     SCHEMA.MSI distributed with the Platform SDK.
! 
!     For general information about "Windows Installer", refer to :
! 
!     http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp
! 
!     For general information about authoring MSI transforms, refer to :
! 
!     http://msdn.microsoft.com/library/en-us/msi/setup/transforms.asp
! 
!     The remainder of this document assumes some familiarity with
!     authoring transforms.  While the MSDN documentation for Windows
!     Installer is a bit dense, it is recommended that you read through
!     the guide on MSI transforms found at the second link above.  Also
!     MSDN includes a step-by-step example for creating a transform at:
! 
!     http://msdn.microsoft.com/library/en-us/msi/setup/a_customization_transform_example.asp
! 
! 1.2  Authoring a Transform
! 
!     Transforms describe a set of modifications to be performed on an
!     existing MSI for the purpose of customizing it.  This is
!     ordinarily done by making a copy of the MSI to be customized,
!     modifying the copy and then using the old and the new MSI to
!     generate a transform.
! 
!     E.g:
!        > copy openafs.msi openafs-modified.msi
!        
!        (edit the openafs-modified.msi to include the necessary changes)
! 
!        > msitran -g openafs-modified.msi openafs.msi openafs-transform.mst
! 
!        (generates openafs-transform.mst, which is the transform)
! 
!     Transforms have an extension of .mst.  'msitran' is a tool
!     distributed as part of the "Windows Installer" SDK (which in turn is
!     a part of the Windows Platform SDK).
! 
!     You can test a transform by :
! 
!        > copy openafs.msi openafs-test.msi
!        > msitran -a openafs-transform.mst openafs-test.msi
! 
!     and then checking the resulting openafs-test.msi to see if all the
!     changes you have made above to openafs-modified.msi is present in
!     openafs-test.msi.  'msitran' will complain if some modification in the
!     transform can not be successfully applied.
! 
!     As mentioned above, you can use a tool like ORCA.EXE to edit the
!     MSI databases directly when editing openafs-modified.msi.  More
!     details are given below.
  
  ----------------------------------------------------------------------
  
  2.  Configuration Options
  
!     The logic necessary to implement many of the settings described in
!     the registry.txt file are present in the MSI.  Most of these can be
!     controlled by setting the corresponding properties to the desired
!     value.  Some settings may require modifying existing registry
!     entries (though not recommended) or adding new resources (like
!     files or registry keys).  Instructions for performing these tasks
!     are below.
  
! 2.1 Configurable Properties
  
!     Most configurable properties correspond to registry keys or
!     values.  Please refer to the release notes for more information
!     about how these registry settings are used.
! 
!     Due to the logic invoked based on the existence of these registry
!     keys or values, they are only set if the associated property is
!     defined to have a non null value.  If the associated property is
!     not defined in the MSI, the registry key or value will not be
!     touched.  By default, the MSI does not contain these properties
!     and hence will not set the registry keys.  You will need to add
!     properties as needed to the MSI.
! 
!     When one of the configurable properties is set, the installer will
!     use the property value to set the corresponding setting in the
!     HKEY_LOCAL_MACHINE registry hive.  HKEY_CURRENT_USER hive is not
!     touched by the installer.
  
!     For each property, the associated registry setting is referenced
!     by the same text used in the registry.txt file.
  
      Strings are quoted using single quotes (e.g. 'a string'). An empty
      string is denoted as ''.  Note that you can't author null values
!     into the 'Property' table.
! 
!     Numeric values should be authored as decimal strings.
! 
! 2.1.1  Setting Properties
! 
!     In order to set a property,
! 
!     a.  Open the MSI in ORCA.EXE
! 
!     b.  Select the 'Property' table from the list of tables on the left.
! 
!     c.  Find the property in the list of properties on the right,
!         double click the value and type the new value.
! 
!     d.  If the property does not exist in the property list, right
!         click the list and select 'Add Row', type the property name
!         and the desired value.
! 
! 
! 2.1.2   OpenAFS for Windows properties
  
      (Service parameters):
      [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]
***************
*** 235,263 ****
      column in the 'Registry' table.  If you want to add additional
      registry keys please refer to section 3 (Additional Resources).
  
! ----------------------------------------------------------------------
  
! 3   Additional Resources
  
!     If you want to add registry keys or files you need to create new
!     components and features for those.  Refer to the Windows Platform
!     SDK for details.
  
!     Add new features under the 'feaClient' or 'feaServer' as
!     appropriate and set the 'Level' column for those features to equal
!     the 'Level' for their parent features for consistency.  Note that
!     none of the features in the OpenAFS for Windows MSI package are
!     designed to be installed to run from 'source' or 'advertised'.  It
!     is recommended that you set 'msidbFeatureAttributesFavorLocal' (0),
!     'msidbFeatureAttributesFollowParent' (2) and
!     'msidbFeatureAttributesDisallowAdvertise' (8) attributes for new
!     features.
  
!     If you are creating new components, retain the same component GUID
!     when creating new transforms against new releases of the OpenAFS
!     MSI package.
  
! 3.1 Example: Adding domain specific registry keys
  
      Following is an example for adding domain specific registry keys.
      Refer to section 2.1 in REGISTRY.TXT for more information.
--- 322,480 ----
      column in the 'Registry' table.  If you want to add additional
      registry keys please refer to section 3 (Additional Resources).
  
! 2.3 Replacing Configuration Files
  
!     The OpenAFS configuration files (CellServDB)
!     can be replaced by your own configuration files.  These files are
!     contained in separate MSI components so that you can disable them
!     individually.
  
!     The recommended method for replacing these files is to first
!     disable the components containing the configuration files that you
!     want to replace, and then add new components for the replacement
!     files.  This is outlined below (assuming you are using ORCA.EXE to
!     author the transform).
  
!     Note that transforms are not a good way to add a new file as an
!     embedded stream.  The method outlined here places the file in the
!     same directory as the MSI for deployment.
  
!     The walkthrough below is to add a custom 'CellServDB' file.
! 
!     1) Disable the component that contains the configuration file that
!        you want to replace.
! 
!        1.1) Locate and select the 'Component' table in the 'Tables'
!             list.
! 
!        1.2) In the Component table, locate the component you need to
!             change ( Ctrl-F invokes the 'Find' dialog).  The component
!             names are listed below in section 2.3.1.  For this
!             example, the component name is 'elf_CellServDB'.
! 
!        1.3) Go to the 'Condition' column of the component.
! 
!        1.4) Enter a condition that evaluates to
!             false. I.e. 'DONOTINSTALL'. (Note that an undefined
!             property always evaluates to false).
! 
!        Note that you can also use this step to disable other
!        configuration files without providing replacements.
! 
!     2) Add a new component containing the new configuration file.
! 
!        2.1) Select the 'Component' table in the 'Tables' list.
! 
!        2.2) Select 'Tables'->'Add Row' (Ctrl-R).
! 
!        2.3) Enter the following :
  
!             Component     : cmf_my_CellServDB
! 	    ComponentId   : {7019836F-BB2C-4AF6-9463-0D6EC9035CF1}
! 	    Directory_	  : dirClient
! 	    Attributes	  : 144
! 	    Condition	  :
! 	    KeyPath	  : fil_my_CellServDB
! 
! 	    Note that the ComponentId is an uppercase GUID.  You can
! 	    generate one using GUIDGEN.EXE or UUIDGEN.EXE, both of
! 	    which are included in the Platform SDK.
! 
! 	    The Attributes value of 144 is a sum of
! 	    msidbComponentAttributesPermanent (16) and
! 	    msidbComponentAttributesNeverOverwrite (128).  This
! 	    ensures that local modifications are not overwritten or
! 	    lost during an installation or uninstallation.  These are
! 	    the same settings used on the default configuration files.
! 
! 	    'fil_my_CellServDB' is a key into the 'File' table which we
! 	    will fill later.
! 
!     3) Add a new feature to hold the new component.
! 
!        3.1) Select the 'Feature' table.
! 
!        3.2) Add a new row (Ctrl-R or 'Tables'->'Add Row') with the
!             following values:
! 
! 	    Feature       : fea_my_CellServDB
! 	    Feature_Parent: feaClient
! 	    Title	  :
! 	    Description	  :
! 	    Display	  : 0
! 	    Level	  : 30
! 	    Directory_	  :
! 	    Attributes	  : 8
! 
! 	    It is important to create the new feature under the
! 	    'feaClient' feature, which will ensure that the
! 	    configuration file will be installed when the client
! 	    binaries are installed.
! 
! 	    Setting 'Display' to 0 will hide this feature from the
! 	    feature selection dialog during an interactive
! 	    installation.  A value of 30 for 'Level' allows this
! 	    feature to be installed by default (on a 'Typical'
! 	    installation).
! 
! 	    The 'Attributes' value is
! 	    msidbFeatureAttributesDisallowAdvertise (8), which is set
! 	    on all features in the OpenAFS MSI.  The OpenAFS MSI is not
! 	    designed for an advertised installation.
! 
!     4) Join the component and the feature.
! 
!        4.1) Select the 'FeatureComponents' table.
! 
!        4.2) Add a new row with the following values:
! 
! 	    Feature    : fea_my_CellServDB
! 	    Component  : cmf_my_CellServDB
! 
!     5) Add an entry to the 'File' table.
! 
!        5.1) Select the 'File' table.
! 
!        5.2) Add a new row with the following values:
! 
! 	    File        : fil_my_CellServDB
! 	    Component_	: cmf_my_CellServDB
! 	    FileName	: CellServDB
! 	    FileSize	: (enter file size here)
! 	    ...
! 	    Attributes	: 8192
! 	    Sequence	: 1000
! 	    (leave other fields blank)
! 
! 	    The 'Attributes' value is msidbFileAttributesNonCompressed
! 	    (8192).  This is because we will be placing this file in
! 	    the same directory as the MSI instead of embedding the
! 	    file in it.  Transforms do not support updating compressed
! 	    sources or adding new cabinet streams.
! 
! 	    Finally, the 'Sequence' value of 1000 will be used later
! 	    to distinguish the file as being in a separate source
! 	    location than the other files in the MSI.
! 
!     6) Set a media source for the file.
! 
!        6.1) Select the 'Media' table.
! 
!        6.2) Add a row with the following values :
! 
! 	    DiskId       : 2
! 	    LastSequence : 1000
! 	    ...
! 	    (leave other fields blank)
! 
! 	    The sequence number of 1000 designates this as the media
! 	    source for the newly added file.
! 
! 2.3.1 Components for Configuration Files
! 
!       CellServDB : 'cpf_CellServDB' (ID {D5BA4C15-DBEC-4292-91FC-B54C30F24F2A})
! 
! 2.4 Adding Domain Specific Registry Keys
  
      Following is an example for adding domain specific registry keys.
      Refer to section 2.1 in REGISTRY.TXT for more information.
***************
*** 347,352 ****
--- 564,601 ----
      integrated logon) and 'LOCALHOST' (disable integrated logon and
      fail logins silently).
  
+ ----------------------------------------------------------------------
+ 
+ 3   Additional Resources
+ 
+     If you want to add registry keys or files you need to create new
+     components and features for those.  Refer to the Windows Platform
+     SDK for details.
+ 
+     It is beyond the scope of this document to provide a comprehensive
+     overview of how to add new resources through a transform.  Please
+     refer to the "Windows Installer" documentation for details.  The
+     relevant section is at :
+ 
+     http://msdn.microsoft.com/library/en-us/msi/setup/using_transforms_to_add_resources.asp
+ 
+     A sample walkthrough of adding a new configuration file is in
+     section 2.3.
+ 
+     Add new features under the 'feaClient' or 'feaServer' as
+     appropriate and set the 'Level' column for those features to equal
+     the 'Level' for their parent features for consistency.  Note that
+     none of the features in the OpenAFS for Windows MSI package are
+     designed to be installed to run from 'source' or 'advertised'.  It
+     is recommended that you set 'msidbFeatureAttributesFavorLocal' (0),
+     'msidbFeatureAttributesFollowParent' (2) and
+     'msidbFeatureAttributesDisallowAdvertise' (8) attributes for new
+     features.
+ 
+     If you are creating new components, retain the same component GUID
+     when creating new transforms against new releases of the OpenAFS
+     MSI package.
+ 
      After making the adjustments to the MSI database using ORCA.EXE
      you can generate a transform with MSITRAN.EXE as follows :
  
***************
*** 400,403 ****
      (Q/A's will be added here as needed)
  
  ----------------------------------------------------------------------
! $Id: msi-deployment-guide.txt,v 1.2.2.1 2004/12/08 09:58:49 jaltman Exp $
--- 649,652 ----
      (Q/A's will be added here as needed)
  
  ----------------------------------------------------------------------
! $Id: msi-deployment-guide.txt,v 1.2.2.2 2005/03/11 06:58:34 shadow Exp $
Index: openafs/doc/txt/winnotes/performance.txt
diff -c /dev/null openafs/doc/txt/winnotes/performance.txt:1.1.2.1
*** /dev/null	Mon Mar 21 13:14:46 2005
--- openafs/doc/txt/winnotes/performance.txt	Fri Mar 11 02:22:30 2005
***************
*** 0 ****
--- 1,64 ----
+ argos.mit.edu with 1.3.73 client
+ 171,194,368 byte file.  "fs flush" before each command
+ 
+ 200mb cache; No MaxMTU
+        write/crypt 2.793 MB/sec
+        read/crypt  2.897 MB/sec
+ 
+        write/clear 7.123 MB/sec
+        read/clear  5.991 MB/sec
+ 
+ 1.2.10(skyrope)
+         write/crypt:  1.836 MB/sec
+         read/crypt:   1.497 MB/sec
+ 
+         write/clear:  2.927 MB/sec
+         read/clear:   2.065 MB/sec
+ 
+ 
+                  1.2.10          1.3.73       improvement
+               ------------    ------------    -----------
+ write/crypt   1.836 MB/sec    2.793 MB/sec       52.1%
+ read/crypt    1.497 MB/sec    2.897 MB/sec       93.5%
+                               
+ write/clear   2.927 MB/sec    7.123 MB/sec      143.4%
+ read/clear    2.065 MB/sec    5.991 MB/sec      190.1%
+ 
+ 
+ 
+ mitz@ANDREW.CMU.EDU tested the 1.3.73 client on his machine
+ against his cell copying a 367181824 byte file.  "fs flush"
+ was run prior to each command.
+ 
+ 
+ Default MaxMTU; Default cache
+        write/crypt:  4.158 MB/sec
+        read/crypt:   5.730 MB/sec
+ 
+        write/clear:  4.537 MB/sec
+        read/clear:  16.762 MB/sec
+ 
+ Changing the cache size made no difference
+ 
+ No MaxMTU; 400MB cache
+        write/crypt:  4.863 MB/sec
+        read/crypt:   6.083 MB/sec
+ 
+        write/clear: 14.286 MB/sec
+        read/clear:  16.257 MB/sec
+ 
+ From Andrew Linux with 1.2.10 on the same machine:
+        write/crypt:  5.358 MB/sec
+        read/crypt:  12.855 MB/sec
+ 
+        write/crypt  18.040 MB/sec (unique file names)
+        read/crypt   23.160 MB/sec (unique file names)
+ 
+        write/clear: 16.401 MB/sec
+        read/clear:  25.192 MB/sec
+ 
+ 
+         
+ 
+ 
+ 
Index: openafs/doc/txt/winnotes/registry.txt
diff -c openafs/doc/txt/winnotes/registry.txt:1.18.2.7 openafs/doc/txt/winnotes/registry.txt:1.18.2.8
*** openafs/doc/txt/winnotes/registry.txt:1.18.2.7	Tue Dec  7 07:48:57 2004
--- openafs/doc/txt/winnotes/registry.txt	Fri Mar 11 01:58:34 2005
***************
*** 29,42 ****
  
  Value   : CacheSize
  Type    : DWORD
! Default : 20480 (CM_CONFIGDEFAULT_CACHESIZE)
  Variable: cm_initParams.cacheSize
  
    Size of the AFS cache in 1k blocks.
  
  Value   : ChunkSize
  Type    : DWORD
! Default : 15 (CM_CONFIGDEFAULT_CHUNKSIZE)
  Variable: cm_logChunkSize (cm_chunkSize = 1 << cm_logChunkSize)
  
    Size of chunk for reading and writing. Actual chunk size is 2^cm_logChunkSize.
--- 29,42 ----
  
  Value   : CacheSize
  Type    : DWORD
! Default : 98304 (CM_CONFIGDEFAULT_CACHESIZE)
  Variable: cm_initParams.cacheSize
  
    Size of the AFS cache in 1k blocks.
  
  Value   : ChunkSize
  Type    : DWORD
! Default : 17 (CM_CONFIGDEFAULT_CHUNKSIZE)
  Variable: cm_logChunkSize (cm_chunkSize = 1 << cm_logChunkSize)
  
    Size of chunk for reading and writing. Actual chunk size is 2^cm_logChunkSize.
***************
*** 51,57 ****
  
  Value	: ServerThreads
  Type	: DWORD
! Default	: 4 (CM_CONFIGDEFAULT_SVTHREADS)
  Variable: numSvThreads
  
    Number of SMB server threads (number of threads of smb_Server). (see
--- 51,57 ----
  
  Value	: ServerThreads
  Type	: DWORD
! Default	: 25 (CM_CONFIGDEFAULT_SVTHREADS)
  Variable: numSvThreads
  
    Number of SMB server threads (number of threads of smb_Server). (see
***************
*** 59,65 ****
  
  Value	: Stats
  Type	: DWORD
! Default : 1000 (CM_CONFIGDEFAULT_STATS)
  Variable: cm_initParams.nStatCaches
  
    Cache configuration.
--- 59,65 ----
  
  Value	: Stats
  Type	: DWORD
! Default : 10000 (CM_CONFIGDEFAULT_STATS)
  Variable: cm_initParams.nStatCaches
  
    Cache configuration.
***************
*** 103,115 ****
    be relative and suffixed to the reference directory (i.e. directory
    where the symlink exists)
   
  Value	: CachePath
  Type	: REG_SZ or REG_EXPAND_SZ
! Default : "%SYSTEMDRIVE%\AFSCache"
  Variable: cm_CachePath
  
!   Location of on-disk cache file.  The default implies the root 
!   directory of the boot disk
  
  
  Value   : NonPersistentCaching
--- 103,117 ----
    be relative and suffixed to the reference directory (i.e. directory
    where the symlink exists)
   
+ 
  Value	: CachePath
  Type	: REG_SZ or REG_EXPAND_SZ
! Default : "%TEMP%\AFSCache"
  Variable: cm_CachePath
  
!   Location of on-disk cache file.  The default is the SYSTEM account's
!   TEMP directory.  The attributes assigned to the file are HIDDEN and
!   SYSTEM.
  
  
  Value   : NonPersistentCaching
***************
*** 124,129 ****
--- 126,143 ----
    using the "fs setcachesize" command.
  
  
+ Value   : ValidateCache
+ Type    : DWORD [0..2]
+ Default : 1
+ Variable: buf_CacheType
+ 
+   This value determines if and when persistent cache validation is 
+   performed.
+     0 - Validation is disabled
+     1 - Validation is performed at startup
+     2 - Validation is performed at shutdown
+ 
+ 
  Value	: TrapOnPanic
  Type	: DWORD {1,0}
  Default : 0
***************
*** 353,361 ****
      to the provided drive letter.
  
  
  
  Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]
  
  
  2. Network provider parameters
--- 367,520 ----
      to the provided drive letter.
  
  
+ Regkey:
+ [HKLM\SOFTWARE\OpenAFS\Client]
+ 
+ Value   : CellServDBDir
+ Type	: REG_SZ
+ Default : <not defined>
+ 
+   Specifies the directory containing the CellServDB file.
+   When this value is not specified, the AFS Client install
+   directory is used.
+ 
+ 
+ Value   : VerifyServiceSignature
+ Type	: REG_DWORD
+ Default : 0x1
+ 
+   This value can be used to disable the runtime verification of 
+   the digital signatures applied to afsd_service.exe and the 
+   OpenAFS DLLs it loads.  This test is performed to verify that 
+   the DLLs which are loaded by afsd_service.exe are from the 
+   same distribution as afsd_service.exe.  This is to prevent
+   random errors caused when DLLs from one distribution of AFS
+   are loaded by another one.  This is not a security test.  The
+   reason for disabling this test is to free up additional memory
+   which can be used for a large cache size.
+ 
+ 
+ Value   : IoctlDebug
+ Type	: REG_DWORD
+ Default : 0x0
+ 
+   This value can be used to debug the cause of pioctl() failures.
+   Set a non-zero value and the pioctl() library will output status
+   information to stdout.  Executing command line tools such as
+   tokens.exe, fs.exe, etc can then be used to determine why the
+   pioctl() call is failing. 
+ 
+ 
+ Value   : StoreAnsiFilenames
+ Type    : REG_DWORD
+ Default : 0x0
+ 
+   This value can be used to force the AFS Client Service to
+   store filenames using the Windows system's ANSI character set
+   instead of the OEM Code Page character set which has traditionally
+   been used by SMB file systems.  
+ 
+   Note: The use of ANSI characters will render access to files
+   with 8-bit OEM file names unaccessible from Windows.  This option
+   is of use primarily when you wish to allow file names produced
+   on Windows to be accessible from Latin-1 Unix systems and vice
+   versa.
+ 
  
  Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]
! 
! Value   : "smb/cifs share name"
! Type    : REG_SZ
! Default : <none>
! 
!     This key is used to map SMB/CIFS shares to Client Side Caching 
!     (off-line access) policies. For each share one of the following
!     policies may be used: "manual", "programs", "documents", "disable"
! 
!     These values used to be stored in afsdsbmt.ini
! 
! Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance]
! 
! Value   : "numeric value"
! Type    : REG_SZ
! Default : <none>
! 
!     This key is used to store dot terminated mount point strings 
!     for use in constructing the fake root.afs volume when Freelance
!     (dynamic roots) mode is activated.
! 
!         "athena.mit.edu#athena.mit.edu:root.cell."
!         ".athena.mit.edu%athena.mit.edu:root.cell."
! 
!     These values used to be stored in afs_freelance.ini
! 
! 
! Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]
! 
! Value   : "numeric value"
! Type    : REG_SZ
! Default : <none>
! 
!     This key is used to store a dot terminated symlink strings 
!     for use in constructing the fake root.afs volume when Freelance
!     (dynamic roots) mode is activated.
! 
!         "linkname:destination-path."
!         "athena:athena.mit.edu."
!         "home:athena.mit.edu\user\j\a\jaltman."
!         "filename:path\file."
! 
! 
! Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Submounts]
! 
! Value   : "submount name"
! Type    : REG_EXPAND_SZ
! Default : <none>
! 
!     This key is used to store mappings of unix style AFS paths
!     to submount names which can be referenced as UNC paths.
!     For example the submount string "/athena.mit.edu/user/j/a/jaltman"
!     can be associated with the submount name "jaltman.home".
!     This can then be referenced as the UNC path \\AFS\jaltman.home.
! 
!     These values used to be stored in afsdsbmt.ini
! 
!     NOTE: Submounts should no longer be used with OpenAFS.
!     Use the Windows Explorer to create drive mappings to AFS UNC
!     paths instead of using the AFS Submount mechanism.
! 
! 
! Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]
! 
! Value   : "hostname or ip address"
! Type    : REG_DWORD
! Default : <none>
! 
!     This key is used to specify a default set of VLDB server preferences.
!     For each entry the value name will be either the IP address of a server
!     or a fully qualified domain name.  The value will be the ranking.  The
!     ranking will be adjusted by a random value between 0 and 256 prior to
!     the preference being set.
! 
! 
! Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]
! 
! Value   : "hostname or ip address"
! Type    : REG_DWORD
! Default : <none>
! 
!     This key is used to specify a default set of File server preferences.
!     For each entry the value name will be either the IP address of a server
!     or a fully qualified domain name.  The value will be the ranking.  The
!     ranking will be adjusted by a random value between 0 and 256 prior to
!     the preference being set.
! 
  
  
  2. Network provider parameters
***************
*** 422,482 ****
    Specifies the DLL to use for the network provider
  
  
- Regkey:
- [HKLM\SOFTWARE\OpenAFS\Client]
- 
- Value   : CellServDBDir
- Type	: REG_SZ
- Default : <not defined>
- 
-   Specifies the directory containing the CellServDB file.
-   When this value is not specified, the AFS Client install
-   directory is used.
- 
- 
- Value   : VerifyServiceSignature
- Type	: REG_DWORD
- Default : 0x1
- 
-   This value can be used to disable the runtime verification of 
-   the digital signatures applied to afsd_service.exe and the 
-   OpenAFS DLLs it loads.  This test is performed to verify that 
-   the DLLs which are loaded by afsd_service.exe are from the 
-   same distribution as afsd_service.exe.  This is to prevent
-   random errors caused when DLLs from one distribution of AFS
-   are loaded by another one.  This is not a security test.  The
-   reason for disabling this test is to free up additional memory
-   which can be used for a large cache size.
- 
- 
- Value   : IoctlDebug
- Type	: REG_DWORD
- Default : 0x0
- 
-   This value can be used to debug the cause of pioctl() failures.
-   Set a non-zero value and the pioctl() library will output status
-   information to stdout.  Executing command line tools such as
-   tokens.exe, fs.exe, etc can then be used to determine why the
-   pioctl() call is failing. 
- 
- 
- Value   : StoreAnsiFilenames
- Type    : REG_DWORD
- Default : 0x0
- 
-   This value can be used to force the AFS Client Service to
-   store filenames using the Windows system's ANSI character set
-   instead of the OEM Code Page character set which has traditionally
-   been used by SMB file systems.  
- 
-   Note: The use of ANSI characters will render access to files
-   with 8-bit OEM file names unaccessible from Windows.  This option
-   is of use primarily when you wish to allow file names produced
-   on Windows to be accessible from Latin-1 Unix systems and vice
-   versa.
- 
- 
- 
  2.1 Domain specific configuration keys for the Network Provider
  ---------------------------------------------------------------
  
--- 581,586 ----
***************
*** 574,579 ****
--- 678,691 ----
  
       See description of LoginRetryInterval.
  
+   Value   : TheseCells
+   Type    : REG_MULTI_SZ
+   NSIS    : <not set>
+ 
+     When Kerberos 5 is being used, TheseCells provides a list of additional
+     cells for which tokens should be obtained with the default Kerberos 5 
+     principal.
+ 
  
  2.1.2  Selection of effective values for domain specific configuration
  ----------------------------------------------------------------------
***************
*** 755,823 ****
    These values used to be stored in the afsdsbmt.ini file.
  
  
- Regkey:
- [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]
- 
- Value   : "smb/cifs share name"
- Type    : REG_SZ
- Default : <none>
- 
-     This key is used to map SMB/CIFS shares to Client Side Caching 
-     (off-line access) policies. For each share one of the following
-     policies may be used: "manual", "programs", "documents", "disable"
- 
-     These values used to be stored in afsdsbmt.ini
- 
- Regkey:
- [HKLM\SOFTWARE\OpenAFS\Client\Freelance]
- 
- Value   : "numeric value"
- Type    : REG_SZ
- Default : <none>
- 
-     This key is used to store dot terminated mount point strings 
-     for use in constructing the fake root.afs volume when Freelance
-     (dynamic roots) mode is activated.
- 
-         "athena.mit.edu#athena.mit.edu:root.cell."
-         ".athena.mit.edu%athena.mit.edu:root.cell."
- 
-     These values used to be stored in afs_freelance.ini
- 
- 
- Regkey:
- [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]
- 
- Value   : "numeric value"
- Type    : REG_SZ
- Default : <none>
- 
-     This key is used to store a dot terminated symlink strings 
-     for use in constructing the fake root.afs volume when Freelance
-     (dynamic roots) mode is activated.
- 
-         "linkname:destination-path."
-         "athena:athena.mit.edu."
-         "home:athena.mit.edu\user\j\a\jaltman."
-         "filename:path\file."
- 
- 
- Regkey:
- [HKLM\SOFTWARE\OpenAFS\Client\Submounts]
- 
- Value   : "submount name"
- Type    : REG_EXPAND_SZ
- Default : <none>
- 
-     This key is used to store mappings of unix style AFS paths
-     to submount names which can be referenced as UNC paths.
-     For example the submount string "/athena.mit.edu/user/j/a/jaltman"
-     can be associated with the submount name "jaltman.home".
-     This can then be referenced as the UNC path \\AFS\jaltman.home.
- 
-     These values used to be stored in afsdsbmt.ini
- 
- 
  ENVIRONMENT VARIABLES:
  
  Variable: AFS_RPC_ENCRYPT 
--- 867,872 ----
