~ubuntu-branches/ubuntu/precise/openafs/precise-proposed

« back to all changes in this revision

Viewing changes to doc/txt/winnotes/afs-changes-since-1.2.txt

  • Committer: Package Import Robot
  • Author(s): Russ Allbery
  • Date: 2012-03-28 17:25:05 UTC
  • mfrom: (28.2.13 sid)
  • Revision ID: package-import@ubuntu.com-20120328172505-y9iycrlfhtfsn7mv
Tags: 1.6.1-1
* New upstream release.
  - Do not ignore all InlineBulkStatus errors in file server.
  - Support for Linux 3.3 and 3.4.
  - Fix incorrect kernel error handling in afs_notify_change.
  - Fix locking around RXS_PreparePacket.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Since 1.6.0102 (1.6.1pre3)
 
2
 
 
3
 * Workaround Win7 SMB Reconnect Bug
 
4
 
 
5
   The SMB specification permits the server to save a round trip
 
6
   in the GSS SPNEGO negotiation by sending an initial security blob.
 
7
   Unfortunately, doing so trips a bug in Windows 7 and Server 2008 R2
 
8
   whereby the SMB 1.x redirector drops the blob on the floor after
 
9
   the first connection to the server and simply attempts to reuse
 
10
   the previous authentication context.  This bug can be avoided by
 
11
   the server sending no security blob in the SMB_COM_NEGOTIATE
 
12
   response.  This forces the client to send an initial GSS init_sec_context
 
13
   blob under all circumstances which works around the bug in Microsoft's
 
14
   code.
 
15
 
 
16
   As a result of the SMB 1.x bug, all attempts to reconnect fail due to
 
17
   SMB connection resets.  The SMB 1.x redirector will retry indefinitely
 
18
   but all processes with outstanding requests to \\AFS will block until
 
19
   the machine is rebooted.
 
20
 
 
21
There were no 1.6.1pre1 and pre2 builds for the Windows platform.
 
22
 
 
23
Since 1.6.0002 (1.6.0b)
 
24
 
 
25
 * Mount point strings always have a trailing dot
 
26
 
 
27
 * Fix "fs setserverprefs" processing in the
 
28
   service for VLDB preferences.
 
29
 
 
30
 * Improved behavior when a volume group is renamed.
 
31
 
 
32
 * The test for whether a volume group name is numeric
 
33
   or not was wrong.
 
34
 
 
35
 * Permit offline volume check to be disabled.
 
36
 
 
37
 * Do not fail a rename due to an EEXIST error if the
 
38
   name is an exact match.
 
39
 
 
40
 * When deciding which buffers to recycle, buffers that
 
41
   are in the current file are skipped if they are in
 
42
   the active chunk.  Do not consider buffers with an
 
43
   out of date data version as in the current chunk.
 
44
 
 
45
 * Vista/Win7 advanced firewall support
 
46
 
 
47
 * Avoid duplicate volume update queries.
 
48
 
 
49
 * TransarcAFSDaemon\NetworkProvider "Debug"
 
50
   Set to one to debug network provider.  Use instead
 
51
   of TraceOption bit.
 
52
 
 
53
 * Add version info to Startup Event log message.
 
54
 
 
55
 * When storing a chunk to the file server, start with
 
56
   the first known dirty buffer.  Do not search backwards.
 
57
 
 
58
 * buf_CleanAsyncLocked() should not instruct cm_BufWrite() to
 
59
   write a full chunk if the current buffer is the only one that
 
60
   is dirty.  cm_BufWrite() will determine if it is appropriate
 
61
   to fill a full chunk when storing.  Instructing it to check
 
62
   a full chunk forces it to do more work than necessary.
 
63
 
 
64
 * Permit longer cellnames in Wix installer.
 
65
 
 
66
 * Only permit NAT pings on the one and only root user connection.
 
67
 
 
68
 * Close a memory leak when processing set token requests.
 
69
 
 
70
 * terminate HOSTS/LMHOSTS with newline
 
71
 
 
72
 * kauth search for kerberos iv port first
 
73
 
 
74
 * The CRT allocator cannot be used for memory that will be freed
 
75
   by afsrpc.dll.  Use xdr_alloc() instead.
 
76
 
 
77
 * if cm_CheckForSingleDirChange() fails, mark the cm_scache_t
 
78
   bufDataVersionLow as the current data version so that old directory
 
79
   buffers are discarded.
 
80
 
 
81
 * Performance drops off considerably when the number of processors
 
82
   increases due to lock contention and the cm_SyncOp wait processing.
 
83
   If the MaxCPUs registry value is not set, limit ourselves to two.
 
84
   Setting MaxCPUs to zero permits use of all CPUs.
 
85
 
 
86
 * cm_buf refcnt must hold buf_globalLock
 
87
 
 
88
 * Releasing the BIOD permits the accumulated buffers to be accessed.
 
89
   Releasing the BIOD before the cm_MergeStatus() call creates a
 
90
   window where the buffer data version is larger than the cm_scache
 
91
   data version.  Release the BIOD after the status merge.
 
92
 
 
93
 * VIOC_GETUNIXMODE pioctl should execute smb_IoctlGetUnixMode not
 
94
   smb_IoctlSetUnixMode.
 
95
 
 
96
 * improved idle dead time handling
 
97
 
 
98
 * failover and retry for VBUSY
 
99
 
 
100
Since 1.6.0001 (1.6.0a)
 
101
 
 
102
 * Permit NPLogonNotify to exit if the service
 
103
   is not responding to pioctl requests.
 
104
 
 
105
 * Correct the CheckOfflineVolumeState logic
 
106
 
 
107
Since 1.6.0000 (1.6.0)
 
108
 
 
109
 * Avoid server refcount leak
 
110
 
1
111
Since 1.5.9907 (1.6pre7)
2
112
 
3
113
 * Add Shutdown message to the windows event log
603
713
      determine if an error was returned for that vnode.  If so,
604
714
      cm_Analyze() is called with no connection, a fake cm_req_t,
605
715
      the fid, and the error.  This permits cm_Analyze() processing
606
 
      to be performed on the file.  
 
716
      to be performed on the file.
607
717
 
608
718
 * Show configuration pages for all types of MSI installations
609
719
 
764
874
 
765
875
Since 1.5.70
766
876
 
767
 
 * Avoid a potential Freelance deadlock during initial execution 
 
877
 * Avoid a potential Freelance deadlock during initial execution
768
878
   of afsd_service.exe if the old ini file data has to be
769
879
   imported.
770
880
 
782
892
   unintentionally disabled in 1.5.69
783
893
 
784
894
Since 1.5.68
785
 
 * Add a context menu to the NetIdMgr AFS Provider 
 
895
 * Add a context menu to the NetIdMgr AFS Provider
786
896
   notification icon.
787
897
 
788
898
 * Prevent an empty directory Btree from being created and
820
930
   This permits the two libraries to be built with different
821
931
   C runtime libraries without crashing.
822
932
 
823
 
 * Set the DOS Readonly attribute on a file/directory 
824
 
   whenever the unix mode combined with the mask 0200 
 
933
 * Set the DOS Readonly attribute on a file/directory
 
934
   whenever the unix mode combined with the mask 0200
825
935
   is true.  Previously there was a discrepency between
826
936
   the mask used for testing for readonly behavior and
827
937
   that used for setting the attribute.
852
962
   to avoid confusion within the smb redirector.
853
963
 
854
964
 * Fix the byte order assigned to port numbers associated
855
 
   with AFSDB record lookups.  They must be network byte 
 
965
   with AFSDB record lookups.  They must be network byte
856
966
   order not host byte order.
857
967
 
858
968
 * Add dynamic server ranking based on RPC round trip
884
994
 
885
995
 * Remove drive mapping functionality from afs_config.exe.
886
996
 
887
 
 * Adjust SMB error return codes to avoid returning 
 
997
 * Adjust SMB error return codes to avoid returning
888
998
   STATUS_TIMEOUT which results in the SMB redirector
889
999
   disconnecting.
890
1000
 
924
1034
 
925
1035
 * Replace use of the 16-bit compatibility API WinExec with
926
1036
   ShellExecuteEx in afs_config.exe and afscreds.exe.  WinExec
927
 
   is incompatible with Windows 7 / Server 2008 R2 UAC 
 
1037
   is incompatible with Windows 7 / Server 2008 R2 UAC
928
1038
   functionality.
929
1039
 
930
1040
Since 1.5.64
934
1044
 * Avoid contacting the file server in order to allocate
935
1045
   an empty buffer beyond the current length of the file.
936
1046
 
937
 
 * When a request for streams on a directory or mount 
 
1047
 * When a request for streams on a directory or mount
938
1048
   point object is received, do not offer a default stream.
939
1049
   This was affecting the saving of roaming profiles.
940
1050
 
941
1051
Since 1.5.63
942
 
 * Fix Windows 2000 compatibility.  Do not call rand_s() 
 
1052
 * Fix Windows 2000 compatibility.  Do not call rand_s()
943
1053
   even if it is compatible with the C run time library
944
1054
   version.
945
1055
 
946
 
 * Fix a data consistency error between the output of 
947
 
   NetWkstaGetInfo and NetServerGetInfo RPCs, specify the Lan 
948
 
   workstation group name "AFS", and report server name as 
 
1056
 * Fix a data consistency error between the output of
 
1057
   NetWkstaGetInfo and NetServerGetInfo RPCs, specify the Lan
 
1058
   workstation group name "AFS", and report server name as
949
1059
   "AFS" instead of "\\AFS" when the caller asks for "\\AFS".
950
1060
 
951
 
 * Enable executables to be run from \\AFS on Windows 7.  
952
 
   Return "Name not found" instead of "File not found" when 
 
1061
 * Enable executables to be run from \\AFS on Windows 7.
 
1062
   Return "Name not found" instead of "File not found" when
953
1063
   a directory or file name cannot be found.
954
1064
 
955
 
 * Prevent cache manager from marking file server "down" when 
956
 
   the data returned in response to either RXAFS_FetchData64 
 
1065
 * Prevent cache manager from marking file server "down" when
 
1066
   the data returned in response to either RXAFS_FetchData64
957
1067
   or RXAFS_StoreData64 is invalid.
958
1068
 
959
1069
 * Add pioctl data validation to the AFS Explorer Shell extension.
960
1070
 
961
1071
Since 1.5.62
962
 
 * After 1.5.62 afslogon.dll would no longer crash but it 
 
1072
 * After 1.5.62 afslogon.dll would no longer crash but it
963
1073
   also would not load "domain" specific configurations.
964
1074
   Fixed.
965
1075
 
966
1076
 * An uninitialized variable was present in the symlink
967
1077
   recursion detection loop.
968
1078
 
969
 
 * Reverse addition of unique per file GUID during 
970
 
   Create/Open responses. Inclusion of the GUID prevents 
 
1079
 * Reverse addition of unique per file GUID during
 
1080
   Create/Open responses. Inclusion of the GUID prevents
971
1081
   Cygwin applications (and others) from accessing //afs.
972
1082
 
973
 
 * Treat "filename::$DATA" as a synonym for "filename".  
974
 
   This addresses the recent report of roaming profiles 
 
1083
 * Treat "filename::$DATA" as a synonym for "filename".
 
1084
   This addresses the recent report of roaming profiles
975
1085
   failing to save back to the file server.
976
1086
 
977
 
 * When given a choice between an error from rx_Write() 
978
 
   or RXAFS_EndStoreData(), use the rx_Write() error.  
979
 
   This ensures that over quota and access denied errors 
 
1087
 * When given a choice between an error from rx_Write()
 
1088
   or RXAFS_EndStoreData(), use the rx_Write() error.
 
1089
   This ensures that over quota and access denied errors
980
1090
   are acted upon.
981
1091
 
982
 
 * If an error occurs during RXAFS_StoreData operations, 
983
 
   apply that error to all of the buffers in the BIOD. 
984
 
   This ensures that failures will not be retried if they 
 
1092
 * If an error occurs during RXAFS_StoreData operations,
 
1093
   apply that error to all of the buffers in the BIOD.
 
1094
   This ensures that failures will not be retried if they
985
1095
   will only fail again.
986
1096
 
987
 
 * Do not perform a DNS lookup for a cellname if the 
988
 
   cellname prefix is _._AFS_IOCTL_._.  This will avoid 
989
 
   DNS lookups when the query is for 
 
1097
 * Do not perform a DNS lookup for a cellname if the
 
1098
   cellname prefix is _._AFS_IOCTL_._.  This will avoid
 
1099
   DNS lookups when the query is for
990
1100
   _._AFS_IOCTL_._.F7E5F580200909010061TTTTNT7TT.{10E39A49-4531-4496-A08E-842D4C440D20}.
991
1101
 
992
 
 * Fix Freelance root.afs volume object callback processing.  
 
1102
 * Fix Freelance root.afs volume object callback processing.
993
1103
   Object synchronization and status merging bugs.
994
1104
 
995
 
 * Fix Explorer Shell "invalid parameter" bug introduced 
 
1105
 * Fix Explorer Shell "invalid parameter" bug introduced
996
1106
   in 1.5.62.
997
1107
 
998
1108
 * Log RXKAD errors to the trace log.
999
1109
 
1000
 
 * Prevent simultaneous pioctl calls from multiple processes 
 
1110
 * Prevent simultaneous pioctl calls from multiple processes
1001
1111
   from stepping on each other's data.
1002
1112
 
1003
 
 * Prevent simultaneous pioctl calls from crashing the 
 
1113
 * Prevent simultaneous pioctl calls from crashing the
1004
1114
   afsd_service.
1005
1115
 
1006
 
 * Add data validation to pioctl output processing in 
 
1116
 * Add data validation to pioctl output processing in
1007
1117
   ktc_GetToken and ktc_ListTokens.
1008
1118
 
1009
 
 * Add data validation to pioctl output processing in 
 
1119
 * Add data validation to pioctl output processing in
1010
1120
   fs.exe and symlink.exe.
1011
1121
 
1012
1122
Since 1.5.61
1015
1125
 
1016
1126
 * Registry specified server preferences did not result in
1017
1127
   the CM_SERVERFLAG_PREF_SET flag being applied to the
1018
 
   cm_server_t object.  
 
1128
   cm_server_t object.
1019
1129
 
1020
1130
 * Avoid unnecessary DNS lookups of share names as cells
1021
1131
   when it is known that the name cannot be a cell name.
1024
1134
 * When processing Dfs Referral requests, do not return an
1025
1135
   error if the server is down or busy; if the volume is
1026
1136
   offline; the cell vldb cannot be reached; etc.
1027
 
   These paths are still \\AFS paths and so the client 
 
1137
   These paths are still \\AFS paths and so the client
1028
1138
   should not be sent to search elsewhere for resolution.
1029
1139
 
1030
1140
 * CRITICAL: Prevent the cm_Daemon thread from terminating when
1045
1155
   loops.  Doing so can result in an access to memory that has
1046
1156
   been freed.
1047
1157
 
1048
 
 * CRITICAL: If a StoreData request offset is not aligned on the 
 
1158
 * CRITICAL: If a StoreData request offset is not aligned on the
1049
1159
   buffer module blockSize, (offset % blockSize) bytes of dirty
1050
1160
   data will not be written to the file server.
1051
1161
 
1052
1162
 * CRITICAL: If a StoreData64 request is sent to a file server
1053
 
   that does not support large files (>2GB) and the client is 
1054
 
   unaware that the server has no large file support, the first 
 
1163
   that does not support large files (>2GB) and the client is
 
1164
   unaware that the server has no large file support, the first
1055
1165
   chunksize worth of data will not be written to the file server.
1056
1166
   This bug was introduced in 1.5.3.   It affects all IBM AFS file
1057
1167
   servers and all OpenAFS file servers older than 1.4.0.
1058
1168
 
1059
1169
Since 1.5.60
1060
 
 * If a file server becomes inaccessible while the cache manager has 
1061
 
   dirty buffers to write, the afsd_service buf_IncrSync thread can 
 
1170
 * If a file server becomes inaccessible while the cache manager has
 
1171
   dirty buffers to write, the afsd_service buf_IncrSync thread can
1062
1172
   attempt to use 100% of the cpu.
1063
1173
 
1064
 
 * Fix the locking that protects the cm_cell_t lists 
 
1174
 * Fix the locking that protects the cm_cell_t lists
1065
1175
   (all, name, id, free).
1066
1176
 
1067
 
 * Remove cm_cell_t objects from the name and id hash tables before 
 
1177
 * Remove cm_cell_t objects from the name and id hash tables before
1068
1178
   placing them on the free list.
1069
1179
 
1070
1180
 * Fix "fs newcell" which was broken in 1.5.60.
1071
1181
 
1072
 
 * Do not attempt to synchronize dirty buffers if the associated 
 
1182
 * Do not attempt to synchronize dirty buffers if the associated
1073
1183
   volume is known to be unavailable.
1074
1184
 
1075
 
 * Log to the Windows Event Log dirty buffers that cannot be written 
 
1185
 * Log to the Windows Event Log dirty buffers that cannot be written
1076
1186
   during the shutdown process.
1077
1187
 
1078
 
 * Modify behavior of a Freelance mountpoint target that does not 
1079
 
   specify a cell.  Instead of assuming the target volume is in the 
1080
 
   Freelance.Local cell, use the workstation "Cell" specified in the 
1081
 
   registry. A mountpoint target of "#root.cell." will now mean the 
1082
 
   root.cell volume in the workstation cell for the current session.  
1083
 
   If the workstation cell changes from "athena.mit.edu" to 
1084
 
   "andrew.cmu.edu", the referenced volume will also change without 
 
1188
 * Modify behavior of a Freelance mountpoint target that does not
 
1189
   specify a cell.  Instead of assuming the target volume is in the
 
1190
   Freelance.Local cell, use the workstation "Cell" specified in the
 
1191
   registry. A mountpoint target of "#root.cell." will now mean the
 
1192
   root.cell volume in the workstation cell for the current session.
 
1193
   If the workstation cell changes from "athena.mit.edu" to
 
1194
   "andrew.cmu.edu", the referenced volume will also change without
1085
1195
   requiring that the mount point targets be altered.
1086
1196
 
1087
 
 * Avoid false infinite loop errors when validating the cm_cell_t 
 
1197
 * Avoid false infinite loop errors when validating the cm_cell_t
1088
1198
   free list during startup.
1089
1199
 
1090
 
 * Fix two more locations where xdr_free() should be used instead of 
1091
 
   free() to permit a checked built of afsd_service.exe to work with 
 
1200
 * Fix two more locations where xdr_free() should be used instead of
 
1201
   free() to permit a checked built of afsd_service.exe to work with
1092
1202
   release builds of afsrpc.dll.
1093
1203
 
1094
 
 * Add cm_FindServerByUuid().  Re-implement RXAFS_InitCallBackState3() 
1095
 
   to permit the server Uuid to be used to lookup the server object 
1096
 
   and from that determine the cell.  This permits callbacks that are 
1097
 
   received from alternate addresses to be processed with a known server 
1098
 
   object.  Previously a request from an unknown server would clear all 
 
1204
 * Add cm_FindServerByUuid().  Re-implement RXAFS_InitCallBackState3()
 
1205
   to permit the server Uuid to be used to lookup the server object
 
1206
   and from that determine the cell.  This permits callbacks that are
 
1207
   received from alternate addresses to be processed with a known server
 
1208
   object.  Previously a request from an unknown server would clear all
1099
1209
   callbacks from all cells.
1100
1210
 
1101
 
 * Fix a bug that prevented optimal performance when using a non-zero 
1102
 
   value for 'daemonCheckVolCBInterval'.  As a reminder, when 
1103
 
   "daemonCheckVolCBInterval" is set to a non-zero value, all .readonly 
1104
 
   volume callbacks are automatically renewed 90 minutes before their 
 
1211
 * Fix a bug that prevented optimal performance when using a non-zero
 
1212
   value for 'daemonCheckVolCBInterval'.  As a reminder, when
 
1213
   "daemonCheckVolCBInterval" is set to a non-zero value, all .readonly
 
1214
   volume callbacks are automatically renewed 90 minutes before their
1105
1215
   expiration.
1106
1216
 
1107
 
 * Fix automatic ranking of vldb servers whose values are obtained from 
 
1217
 * Fix automatic ranking of vldb servers whose values are obtained from
1108
1218
   the CellServDB file.
1109
1219
 
1110
 
 * Add logging for RX CALL DEAD errors which are generated if the remote 
 
1220
 * Add logging for RX CALL DEAD errors which are generated if the remote
1111
1221
   host is unreachable.
1112
1222
 
1113
 
 * Add failover for RX CALL TIMEOUT errors when the volume is readonly 
 
1223
 * Add failover for RX CALL TIMEOUT errors when the volume is readonly
1114
1224
   or the call is to a vldb server.
1115
1225
 
1116
 
 * Add registry based cell search functionality to NetIdMgr, 
 
1226
 * Add registry based cell search functionality to NetIdMgr,
1117
1227
   afs_config.exe, and klog.exe.
1118
1228
 
1119
 
 * afsconf_GetCellInfo() has been modified to perform gethostbyname() 
1120
 
   lookups on the host names in the CellServDB instead of using the 
1121
 
   specified IP addresses.  This provides aklog, pts, vos, etc. the same 
 
1229
 * afsconf_GetCellInfo() has been modified to perform gethostbyname()
 
1230
   lookups on the host names in the CellServDB instead of using the
 
1231
   specified IP addresses.  This provides aklog, pts, vos, etc. the same
1122
1232
   CellServDB behavior that the Windows Cache Manager uses.
1123
1233
 
1124
 
 * Completely a behind the scenes change.  The snprintf() routines have 
 
1234
 * Completely a behind the scenes change.  The snprintf() routines have
1125
1235
   been completely rewritten.
1126
1236
 
1127
 
 * When updating the stat cache entry callback of a .readonly object 
1128
 
   from the volume group object, update the file server reference to 
 
1237
 * When updating the stat cache entry callback of a .readonly object
 
1238
   from the volume group object, update the file server reference to
1129
1239
   ensure it matches the most update to date callback.
1130
1240
 
1131
 
 * Add proper support for processing callbacks from multi-homed file 
1132
 
   servers.  Instead of comparing servers by cm_server_t pointer, 
 
1241
 * Add proper support for processing callbacks from multi-homed file
 
1242
   servers.  Instead of comparing servers by cm_server_t pointer,
1133
1243
   compare them by UUID when the UUID is known.
1134
1244
 
1135
 
 * During a shutdown short circuit the offline volume check daemon 
 
1245
 * During a shutdown short circuit the offline volume check daemon
1136
1246
   functionality.
1137
1247
 
1138
1248
 * Properly track link counts during cm_Link and cm_Unlink operations.
1139
1249
 
1140
 
 * Return the error code of RXAFS_FetchData / RXAFS_StoreData in 
 
1250
 * Return the error code of RXAFS_FetchData / RXAFS_StoreData in
1141
1251
   preference to an error code reported by rx_EndCall.
1142
1252
 
1143
 
 * Add "PerFileAccessCheck" registry value to permit testing against 
1144
 
   experimental file servers that include per-file acl support.  This 
 
1253
 * Add "PerFileAccessCheck" registry value to permit testing against
 
1254
   experimental file servers that include per-file acl support.  This
1145
1255
   value is intentionally undocumented.  It is not to be used by
1146
1256
   production environment deployments.
1147
1257
 
1148
 
 * Log a warning to trace log if a volume group is marked as a DFS 
 
1258
 * Log a warning to trace log if a volume group is marked as a DFS
1149
1259
   File Set.  The Windows OpenAFS client does not include DFS support.
1150
1260
 
1151
 
 * Fix a bug introduced in 1.5.60 that prevents the afs netidmgr 
 
1261
 * Fix a bug introduced in 1.5.60 that prevents the afs netidmgr
1152
1262
   provider from obtaining tokens when referrals are in play.
1153
1263
 
1154
 
 * Add "fs chown" and "fs chgrp" commands to permit the owner and 
 
1264
 * Add "fs chown" and "fs chgrp" commands to permit the owner and
1155
1265
   group of objects stored in AFS to be set from Windows.
1156
1266
 
1157
 
 * Avoid performing background daemon operations when the machine is 
 
1267
 * Avoid performing background daemon operations when the machine is
1158
1268
   going into suspend mode.
1159
1269
 
1160
1270
 * Perform offline volume checks in most recently used order.
1161
1271
 
1162
1272
 * Prevent crash when a data version for a cache object goes backwards.
1163
1273
 
1164
 
 * fs setquota, fs setcachesize, vos setfields, and vos create now 
 
1274
 * fs setquota, fs setcachesize, vos setfields, and vos create now
1165
1275
   accept human readable orders of magnitude. (K, M, G)
1166
1276
 
1167
1277
 * fs listquota fixed to permit large quota sizes to be displayed.
1168
1278
 
1169
1279
 * rx packet resend and data packets sent counts were incorrect.
1170
1280
 
1171
 
 * Multi-thread safe library versions are now being generated and used.  
 
1281
 * Multi-thread safe library versions are now being generated and used.
1172
1282
   mtafsubik.lib, mtafsutil.lib, mtafsvldb.lib, mtafsvol.lib.
1173
1283
 
1174
1284
 * Microsoft SMB Redirector (mrxsmb.sys) support for ExtendedSessTimeout
1181
1291
   in an unexpected panic while freeing the Rx call iovq.
1182
1292
 
1183
1293
Since 1.5.59
1184
 
 * A fix to the pioctl library to support drive substitution 
 
1294
 * A fix to the pioctl library to support drive substitution
1185
1295
   to UNC paths.� (SUBST <d:> <\\afs\cell\path>).
1186
1296
 
1187
 
 * On April 9th Microsoft released a Hot Fix for Windows Server 2003 SP2 
1188
 
   that corrects a deadlock in the smb redirector and also adds new 
1189
 
   functionality that permits the AFS SMB server to be given a longer 
1190
 
   timeout than is normally the case.  New functionality has been added 
 
1297
 * On April 9th Microsoft released a Hot Fix for Windows Server 2003 SP2
 
1298
   that corrects a deadlock in the smb redirector and also adds new
 
1299
   functionality that permits the AFS SMB server to be given a longer
 
1300
   timeout than is normally the case.  New functionality has been added
1191
1301
   to configure these additional LanmanWorkstation\Parameter values.
1192
1302
   (This functionality has been backported to XP SP3 and is scheduled
1193
1303
   to be released on June 5th.)
1194
 
   
1195
 
 * The BackConnectionHostNames registry value configuration was broken 
 
1304
 
 
1305
 * The BackConnectionHostNames registry value configuration was broken
1196
1306
   when dynamic re-establishment of Netbios Name registrations was added.
1197
1307
   Restore it.
1198
1308
 
1199
1309
 * Hidden vos commands are revealed.
1200
1310
 
1201
 
 * If the "DisableLoopbackCheck" registry value is set, do not unset 
 
1311
 * If the "DisableLoopbackCheck" registry value is set, do not unset
1202
1312
   it during the same service session.
1203
1313
 
1204
 
 * Reorganize code that prevents multiple Store operations to the same 
 
1314
 * Reorganize code that prevents multiple Store operations to the same
1205
1315
   File.
1206
1316
 
1207
 
 * Modify IsPathInAfs test in Explorer Shell Extension and fs.exe to 
 
1317
 * Modify IsPathInAfs test in Explorer Shell Extension and fs.exe to
1208
1318
   permit broken symlinks to be treated as being in AFS.
1209
1319
 
1210
1320
 * Fix vos commands that output 64-bit integer values.
1211
1321
 
1212
1322
 * Cygwin Import Libraries are provided in the SDK for all OpenAFS DLLs.
1213
 
   Permits building cygwin applications against OpenAFS libraries. 
1214
 
 
1215
 
 * OpenAFS Release Notes, Administrator Guide and User Guide now installed 
1216
 
   as Windows HTML Help (.CHM) files.  
1217
 
 
1218
 
 * NSIS installer does a much better job of cleaning up files left 
 
1323
   Permits building cygwin applications against OpenAFS libraries.
 
1324
 
 
1325
 * OpenAFS Release Notes, Administrator Guide and User Guide now installed
 
1326
   as Windows HTML Help (.CHM) files.
 
1327
 
 
1328
 * NSIS installer does a much better job of cleaning up files left
1219
1329
   over from previous installs.
1220
1330
 
1221
 
 * Fix RT#124787, a race condition between "fs flush <dir>", "fs flushvolume", 
1222
 
   or "fs flushall" and on-going directory operations that can result in 
 
1331
 * Fix RT#124787, a race condition between "fs flush <dir>", "fs flushvolume",
 
1332
   or "fs flushall" and on-going directory operations that can result in
1223
1333
   afsd_service.exe crashing.
1224
1334
 
1225
 
 * Add support for DNS SRV records in place of AFSDB records.� 
1226
 
   _afs3-vlserver._udp.<cellname>.  Priority field is used.� 
 
1335
 * Add support for DNS SRV records in place of AFSDB records.�
 
1336
   _afs3-vlserver._udp.<cellname>.  Priority field is used.�
1227
1337
   Weight is currently ignored.
1228
1338
 
1229
 
 * Add a method of specifying Client CellServDB information within the 
1230
 
   registry that can be used to either override the CellServDB file or 
 
1339
 * Add a method of specifying Client CellServDB information within the
 
1340
   registry that can be used to either override the CellServDB file or
1231
1341
   force the use of DNS lookups for a given cell.
1232
1342
 
1233
1343
   The registry schema is as follows:
1252
1362
   If [servername] keys are specified and none of them evaluate
1253
1363
   to a valid server configuration, the return code is success.
1254
1364
   This prevents failover to the CellServDB file or DNS.
1255
 
   
 
1365
 
1256
1366
   Only one of "HostName" or "IPv4Address" is required.  "HostName"
1257
1367
   is optional if [servername] is the host name.
1258
1368
 
1259
 
 * Extend registry based CellServDB functionality to 
1260
 
   afsconf_GetCellInfo() interface used by aklog and many 
 
1369
 * Extend registry based CellServDB functionality to
 
1370
   afsconf_GetCellInfo() interface used by aklog and many
1261
1371
   other command line utilities.
1262
1372
 
1263
1373
 * libafsconf.dll moved from OpenAFS\Client\Program to OpenAFS\Common
1264
1374
   as it is now used by both client and server components.
1265
1375
 
1266
1376
Since 1.5.58
1267
 
 * PriorityClass of afsd_service.exe process raised to 
1268
 
   "High" to match the priority of the system services 
 
1377
 * PriorityClass of afsd_service.exe process raised to
 
1378
   "High" to match the priority of the system services
1269
1379
   that are waiting for afsd_service.exe to respond.
1270
1380
   Configurable using [TransarcAFSDaemon\Parameters]
1271
1381
   DWORD "PriorityClass" value.  (use values from Win32
1273
1383
 
1274
1384
 * Change error reporting of CM_ERROR_BADSHARENAME to
1275
1385
   use the correct error (NTSTATUS_BAD_NETWORK_PATH).
1276
 
   The error we were sending would cause the smb 
 
1386
   The error we were sending would cause the smb
1277
1387
   redirector to drop the connection.
1278
1388
 
1279
1389
 * Change the error reporting of CM_ERROR_ALLOFFLINE
1280
1390
   and CM_ERROR_ALLDOWN to return NTSTATUS_PATH_NOT_FOUND.
1281
 
   Previous we would return Bad Network Path which 
 
1391
   Previous we would return Bad Network Path which
1282
1392
   would cause the smb redirector to cancel all file
1283
1393
   handles on the same "share".
1284
1394
 
1287
1397
   afsrpc.dll now implements and exports xdr_free().
1288
1398
 
1289
1399
 * Removed all unprotected OutputDebugString() calls as
1290
 
   those calls can block for up to 10 seconds if there 
 
1400
   those calls can block for up to 10 seconds if there
1291
1401
   is contention for the globally shared memory or if
1292
1402
   the debugger fails to read data in a timely manner.
1293
1403
 
1294
 
 * Visual Studio 2008, WDK 6.1 and DDK 6.1 are now 
 
1404
 * Visual Studio 2008, WDK 6.1 and DDK 6.1 are now
1295
1405
   supported for builds.  The production releases still
1296
1406
   use VS 2005.
1297
1407
 
1298
1408
Since 1.5.57
1299
 
 * Discovered that XP/2003 supports a variant on recvmsg 
1300
 
   called WSARecvMsg.  The input parameters are mostly 
1301
 
   compatible with the Posix recvmsg.  This will save 
 
1409
 * Discovered that XP/2003 supports a variant on recvmsg
 
1410
   called WSARecvMsg.  The input parameters are mostly
 
1411
   compatible with the Posix recvmsg.  This will save
1302
1412
   multiple memcpy() calls per received packet.
1303
1413
 
1304
 
 * Discovered that Vista/2008 supports a variant on 
1305
 
   sendmsg called WSASendMsg.  The input parameters 
1306
 
   are mostly compatible with the Posix sendmsg.  This 
 
1414
 * Discovered that Vista/2008 supports a variant on
 
1415
   sendmsg called WSASendMsg.  The input parameters
 
1416
   are mostly compatible with the Posix sendmsg.  This
1307
1417
   will save multiple memcpy() calls per sent packet.
1308
1418
 
1309
 
 * Exporting rx_ReadProc32, rx_WriteProc32 from afsrpc.dll 
1310
 
   and utilizing rx_ReadProc32 from within the cache manager 
1311
 
   as part of the FetchData operations.  rx_ReadProc32 and 
1312
 
   rx_WriteProc32 are optimized versions of rx_ReadProc and 
 
1419
 * Exporting rx_ReadProc32, rx_WriteProc32 from afsrpc.dll
 
1420
   and utilizing rx_ReadProc32 from within the cache manager
 
1421
   as part of the FetchData operations.  rx_ReadProc32 and
 
1422
   rx_WriteProc32 are optimized versions of rx_ReadProc and
1313
1423
   rx_WriteProc for use when reading 32-bit integer values.
1314
1424
 
1315
 
 * The Network Identity Manager AFS provider now reports 
1316
 
   progress events.  These provide a better user experience 
 
1425
 * The Network Identity Manager AFS provider now reports
 
1426
   progress events.  These provide a better user experience
1317
1427
   with Network Identity Manager 2.0.
1318
1428
 
1319
 
 * [RT 124293] A race condition exists which permits the 
1320
 
   scp field of the an smb_fid_t object to become invalid 
1321
 
   after a request on the smb_fid_t has begun.  Remove the 
1322
 
   race by protecting all access to the scp field with the 
1323
 
   smb_fid_t mx mutex and obtaining a local reference on 
 
1429
 * [RT 124293] A race condition exists which permits the
 
1430
   scp field of the an smb_fid_t object to become invalid
 
1431
   after a request on the smb_fid_t has begun.  Remove the
 
1432
   race by protecting all access to the scp field with the
 
1433
   smb_fid_t mx mutex and obtaining a local reference on
1324
1434
   the cm_scache_t object for the length of the request.
1325
1435
 
1326
 
 * [RT 124276] If the vldb is out of sync with the contents 
1327
 
   of the file servers, afsd_service will retry too many 
1328
 
   times when a file server reports a volume as not being 
1329
 
   present.  Now if the list reported by the vldb is the 
1330
 
   same as the previously seen list, then the retry is 
 
1436
 * [RT 124276] If the vldb is out of sync with the contents
 
1437
   of the file servers, afsd_service will retry too many
 
1438
   times when a file server reports a volume as not being
 
1439
   present.  Now if the list reported by the vldb is the
 
1440
   same as the previously seen list, then the retry is
1331
1441
   aborted.
1332
1442
 
1333
 
 * [RT 124276] Read-only volume failover was broken in 
1334
 
   1.5.53 whenever accessing a volume results in VNOVOL or 
 
1443
 * [RT 124276] Read-only volume failover was broken in
 
1444
   1.5.53 whenever accessing a volume results in VNOVOL or
1335
1445
   VMOVED.
1336
1446
 
1337
 
 * [RT 124276] Prior to 1.3.70 the volume server reference 
1338
 
   list was not reference counted and would be prematurely 
1339
 
   freed while in use.  When reference counting was added 
1340
 
   in 1.3.70 a bug was introduced that could result in 
 
1447
 * [RT 124276] Prior to 1.3.70 the volume server reference
 
1448
   list was not reference counted and would be prematurely
 
1449
   freed while in use.  When reference counting was added
 
1450
   in 1.3.70 a bug was introduced that could result in
1341
1451
   service reference list corruption.
1342
1452
 
1343
 
 * Add Windows Application Event Log warning messages for 
1344
 
   "Client SMB MPX value too large" and 
 
1453
 * Add Windows Application Event Log warning messages for
 
1454
   "Client SMB MPX value too large" and
1345
1455
   "Client SMB Buffer Size too small".
1346
1456
 
1347
 
 * Renaming of files across directory boundaries would result 
1348
 
   in an invalid handle error when attempting to access the 
 
1457
 * Renaming of files across directory boundaries would result
 
1458
   in an invalid handle error when attempting to access the
1349
1459
   files after the move.
1350
1460
 
1351
 
 * Fix the handling of Tran2 Set Path Info RPCs.  Do not fail 
1352
 
   when a smb file descriptor cannot be found.  The whole point 
1353
 
   of using a Path Info function is because an smb file 
 
1461
 * Fix the handling of Tran2 Set Path Info RPCs.  Do not fail
 
1462
   when a smb file descriptor cannot be found.  The whole point
 
1463
   of using a Path Info function is because an smb file
1354
1464
   descriptor wasn't allocated.
1355
1465
 
1356
 
 * More edge cases in which dynamic addition of Freelance 
1357
 
   root.afs entries would get the wrong FID or where the 
 
1466
 * More edge cases in which dynamic addition of Freelance
 
1467
   root.afs entries would get the wrong FID or where the
1358
1468
   root.afs directory would not be refreshed.
1359
1469
 
1360
 
 * Buffer overflow could occur if the workstation cell name was 
1361
 
   longer than 64 characters.  Crashes could occur in 
 
1470
 * Buffer overflow could occur if the workstation cell name was
 
1471
   longer than 64 characters.  Crashes could occur in
1362
1472
   afscreds.exe, afslogon.dll, and afsd_service.exe.
1363
1473
 
1364
 
 * VNOSERVICE and VOFFLINE errors were leaking and were exposed 
 
1474
 * VNOSERVICE and VOFFLINE errors were leaking and were exposed
1365
1475
   to the smb client.
1366
1476
 
1367
 
 * Improve consistency of the bad data version value used for 
 
1477
 * Improve consistency of the bad data version value used for
1368
1478
   cm_scache fields.
1369
1479
 
1370
 
 * Log file server uuid values as part of the cm_server object 
1371
 
   when available.  Dump the cm_server object list in response 
 
1480
 * Log file server uuid values as part of the cm_server object
 
1481
   when available.  Dump the cm_server object list in response
1372
1482
   to "fs memdump".
1373
1483
 
1374
 
 * Optimize the performance of resetting access control lists 
 
1484
 * Optimize the performance of resetting access control lists
1375
1485
   when tokens are set or removed.
1376
1486
 
1377
 
 * Fix vos.exe so that it can work with very large volume 
 
1487
 * Fix vos.exe so that it can work with very large volume
1378
1488
   identifiers
1379
1489
 
1380
 
 * Remove symlink recursion tests and increase max symlink count 
 
1490
 * Remove symlink recursion tests and increase max symlink count
1381
1491
   to 64 from 16.
1382
1492
 
1383
1493
Since 1.5.56
1385
1495
 
1386
1496
 * Fixed some additional race conditions in the Rx library
1387
1497
 
1388
 
 * Ensure that Freelance allocation of vnodes follow 
1389
 
   the AFS convention of odd vnodes are directories 
 
1498
 * Ensure that Freelance allocation of vnodes follow
 
1499
   the AFS convention of odd vnodes are directories
1390
1500
   and everything else is an even vnode.
1391
1501
 
1392
 
 * Add Freelance logic to mount point and symlink 
 
1502
 * Add Freelance logic to mount point and symlink
1393
1503
   evaluation functions.
1394
1504
 
1395
1505
 * Enhance smb_ParseASCIIBlock() so that it can handle
1396
1506
   all of the STRING formats defined by the CIFS Technical
1397
 
   Report 1.0.  
 
1507
   Report 1.0.
1398
1508
 
1399
1509
 * Validate the output of smb_ParseASCIIBlock() in all
1400
1510
   callers.  Return CM_ERROR_BADSMB if the STRING field
1401
1511
   cannot be parsed.  CM_ERROR_BADSMB will cause the
1402
1512
   contents of the packet to be logged.
1403
1513
 
1404
 
 * If multiple SMB Raw Write operations were taking 
 
1514
 * If multiple SMB Raw Write operations were taking
1405
1515
   place at the same time, there could be data corruption
1406
 
   because unique event objects were not generated for 
 
1516
   because unique event objects were not generated for
1407
1517
   each Netbios receive operation.
1408
1518
 
1409
1519
Since 1.5.55
1410
1520
 
1411
1521
 * Fix a race in rxi_WriteProc which could result
1412
 
   in a freed or in use packet being passed to 
 
1522
   in a freed or in use packet being passed to
1413
1523
   rxi_PrepareSendPacket if the call is currently
1414
1524
   in a transmit wait state.  Passing a freed packet
1415
1525
   will result in a panic.  Passing an in use packet
1416
1526
   might result in a call failure or perhaps data
1417
1527
   corruption.
1418
1528
 
1419
 
 * Kerberos referrals broke the NIM AFS provider 
 
1529
 * Kerberos referrals broke the NIM AFS provider
1420
1530
   logic for automated configuration of the workstation
1421
 
   cell with a new identity.  Now if a referrals 
 
1531
   cell with a new identity.  Now if a referrals
1422
1532
   response is returned, assume the cell belongs to the
1423
1533
   new identify.
1424
1534
 
1425
 
 * The interface to buf_CleanAsync() and 
1426
 
   buf_CleanAsyncLocked() has been changed to permit 
1427
 
   errors to be propagated to the caller.  
 
1535
 * The interface to buf_CleanAsync() and
 
1536
   buf_CleanAsyncLocked() has been changed to permit
 
1537
   errors to be propagated to the caller.
1428
1538
 
1429
1539
 * During an enumeration of a directory, if the btree
1430
1540
   has not yet been generated, return an error.
1444
1554
 * pioctl drive mapping checks need to take into account
1445
1555
   Global Drive Mappings and SUBST assignments.
1446
1556
 
1447
 
 * Rename operations should not be permitted if the 
 
1557
 * Rename operations should not be permitted if the
1448
1558
   destination name collides with an existing name that
1449
1559
   differs only by case UNLESS the collision is the object
1450
1560
   that is being renamed.
1452
1562
 * Increase the maximum number of background daemon threads
1453
1563
   to 64.  Leave the default at 4.
1454
1564
 
1455
 
 * Set the FILE_UNICODE_ON_DISK flag when reporting the 
 
1565
 * Set the FILE_UNICODE_ON_DISK flag when reporting the
1456
1566
   file system characteristics.
1457
1567
 
1458
1568
 * Report the maximum component name length as 255 even
1469
1579
 * rxdebug now indicates if any RX_CONN flag is set
1470
1580
   not just some of them
1471
1581
 
1472
 
 * Change the mapping of CM_ERROR_WOULDBLOCK from 
 
1582
 * Change the mapping of CM_ERROR_WOULDBLOCK from
1473
1583
   NTSTATUS_LOCK_NOT_GRANTED to NTSTATUS_CANT_WAIT
1474
1584
 
1475
1585
Since 1.5.54
1478
1588
 
1479
1589
 * Prevent separate cell entries from being created for
1480
1590
   "foobar.org" and "foobar.org." which can happen if
1481
 
   an AFSDB record is found instead of a CellServDB 
 
1591
   an AFSDB record is found instead of a CellServDB
1482
1592
   record.
1483
1593
 
1484
 
 * Fix a panic when checking the SMB virtual circuit list.  
1485
 
   If a VC is destroyed while the list is being checked 
 
1594
 * Fix a panic when checking the SMB virtual circuit list.
 
1595
   If a VC is destroyed while the list is being checked
1486
1596
   it is possible for the next object to become invalid.
1487
1597
 
1488
 
 * Increased logging to afsd_init.log of netbios name 
 
1598
 * Increased logging to afsd_init.log of netbios name
1489
1599
   related errors.
1490
1600
 
1491
 
 * Fix a DNLC panic when a UTF-16 string that cannot be 
 
1601
 * Fix a DNLC panic when a UTF-16 string that cannot be
1492
1602
   converted to a utf-8 string is provided as a filename.
1493
1603
 
1494
 
 * In the NSIS installer, delete old afslogon.dll/afscpcc.exe 
1495
 
   from %windir%\system32 and fix the WinLogon\Notify\AfsLogon 
1496
 
   location to refer directly to the new location in 
 
1604
 * In the NSIS installer, delete old afslogon.dll/afscpcc.exe
 
1605
   from %windir%\system32 and fix the WinLogon\Notify\AfsLogon
 
1606
   location to refer directly to the new location in
1497
1607
   %programfiles%\openafs\client\program
1498
1608
 
1499
 
 * Be more aggressive about responding to Netbios 
1500
 
   NRC_BRIDGE/NRC_NOWILD errors.  Rebind the Netbios name to 
1501
 
   the LANA within the listener thread without performing a 
 
1609
 * Be more aggressive about responding to Netbios
 
1610
   NRC_BRIDGE/NRC_NOWILD errors.  Rebind the Netbios name to
 
1611
   the LANA within the listener thread without performing a
1502
1612
   delete and reset.
1503
1613
 
1504
 
 * Use the WNet Enumeration of all connected drives as a filter 
1505
 
   in the pioctl GetIoctlHandle operation.  This should remove 
1506
 
   the last situations in which there was a delay when opening 
1507
 
   an Explorer Shell properties menu with the AFS Shell 
 
1614
 * Use the WNet Enumeration of all connected drives as a filter
 
1615
   in the pioctl GetIoctlHandle operation.  This should remove
 
1616
   the last situations in which there was a delay when opening
 
1617
   an Explorer Shell properties menu with the AFS Shell
1508
1618
   Extension.
1509
1619
 
1510
 
 * Fix the parsing of CellServDB in Windows to handle linked 
 
1620
 * Fix the parsing of CellServDB in Windows to handle linked
1511
1621
   cells as is done on Unix.
1512
1622
 
1513
1623
 * Add support for linked cells to the cache manager,
1514
1624
   netidmgr afs provider, and aklog.  When two cells are
1515
1625
   linked, a volume lookup that fails in one cell is looked
1516
 
   up in the other.  This can be used for construction of 
 
1626
   up in the other.  This can be used for construction of
1517
1627
   test cells that override specific volumes; cell renaming;
1518
1628
   and cell splitting.
1519
1629
 
1520
 
 * Increase the length of cell and realm names that can 
 
1630
 * Increase the length of cell and realm names that can
1521
1631
   be entered in the NIM AFS provider.
1522
1632
 
1523
 
 * Actively prevent a 32-bit afsd_service.exe from 
 
1633
 * Actively prevent a 32-bit afsd_service.exe from
1524
1634
   executing in the WOW64 environment.
1525
1635
 
1526
1636
 * Protect against invalid IP address values in CellServDB
1532
1642
   an rx_packet when an error occurs while writing the
1533
1643
   packet.
1534
1644
 
1535
 
 * Fix an exception cause by a race condition when 
 
1645
 * Fix an exception cause by a race condition when
1536
1646
   processing multiple file change notifications registered
1537
1647
   by the Explorer Shell or other applications.
1538
1648
 
1539
 
 * Modify the Rx debug interface to use var_args and 
1540
 
   permit Rx debugging to be used on 64-bit Windows 
 
1649
 * Modify the Rx debug interface to use var_args and
 
1650
   permit Rx debugging to be used on 64-bit Windows
1541
1651
   which previously had it disabled.
1542
1652
 
1543
1653
Since 1.5.52
1544
1654
 
1545
1655
 * Automated lock hierarchy enforcement added to the
1546
1656
   osi base lock package.  This permits detection of lock
1547
 
   violations that might but often does not result in 
 
1657
   violations that might but often does not result in
1548
1658
   deadlocks.  Enabled by default in the checked builds.
1549
1659
   May be activated in release builds via the registry
1550
1660
   value "LockOrderValidation" in the TransarcAFSDaemon
1552
1662
 
1553
1663
   When a violation is detection an assertion is thrown
1554
1664
   generating a dump file and a message indicating which
1555
 
   locks were obtained out of order is logged to the 
 
1665
   locks were obtained out of order is logged to the
1556
1666
   Windows Application Event Log.
1557
1667
 
1558
1668
 * Attempt to ensure that a dump file will be generated
1564
1674
   using the lock order verifier and were corrected.
1565
1675
 
1566
1676
 * A race condition within the function path cm_GetSCache() ->
1567
 
   cm_GetNewSCache() -> cm_RecycleSCache() permitted a 
1568
 
   cm_scache_t object to be issued simultaneously to two 
1569
 
   threads.   This would eventually result in a panic due 
 
1677
   cm_GetNewSCache() -> cm_RecycleSCache() permitted a
 
1678
   cm_scache_t object to be issued simultaneously to two
 
1679
   threads.   This would eventually result in a panic due
1570
1680
   to the resulting undercount.
1571
1681
 
1572
1682
 * Fix interpretation of the empty string as the ioctl path
1573
 
   to mean the current directory.  "fs lsm", "symlink list", 
 
1683
   to mean the current directory.  "fs lsm", "symlink list",
1574
1684
   etc. now return a "not a ..." error instead of "does not
1575
1685
   exist".
1576
1686
 
1577
1687
 * Add SMB_STRF_SRCNULTERM flag to smb_ParseStringXXX functions.
1578
1688
   to indicate that the input string is a nul terminated string.
1579
 
   Assign ti when input strings are nul terminated instead of 
 
1689
   Assign ti when input strings are nul terminated instead of
1580
1690
   length counted. (from 1.5.50)
1581
1691
 
1582
1692
 * The CIFS protocol specification for handling NT_TRANSACT_CREATE
1584
1694
   in bytes, not in characters.  Fix the implementation to match
1585
1695
   the observed behavior. (1.5.50)
1586
1696
 
1587
 
 * The cm_HaveAccessRights() attempt at deadlock avoidance by 
 
1697
 * The cm_HaveAccessRights() attempt at deadlock avoidance by
1588
1698
   calling lock_TryRead() on the parent directory cm_scache_t rw-lock
1589
1699
   does not avoid the deadlock.  Avoid the deadlock by enforcing the
1590
 
   lock order of the lowest vnode first.  Then remove the infinite 
 
1700
   lock order of the lowest vnode first.  Then remove the infinite
1591
1701
   loop avoidance in cm_SyncOp() that was returning an unwarranted
1592
1702
   access denied error.
1593
1703
 
1594
 
 * File Server lock synchronization was not propertly enforced in 
 
1704
 * File Server lock synchronization was not propertly enforced in
1595
1705
   smb_ReceiveNTCreateX() and smb_ReceiveNTTranCreate().
1596
1706
 
1597
 
 * Another change to the short name generator.  Plus and equal are 
1598
 
   not valid characters in a short name according to the 
 
1707
 * Another change to the short name generator.  Plus and equal are
 
1708
   not valid characters in a short name according to the
1599
1709
   RtlIsNameLegalDOS8Dot3() in kernel mode.  They have been replaced
1600
1710
   with left and right brace in order to minimize the impact.
1601
1711
 
1603
1713
   the number of known file servers or vldb servers increases during
1604
1714
   the preparation phase of a cm_CheckServers() operation.
1605
1715
 
1606
 
 * If the SMB Authentication would fail, a LSA allocated memory 
 
1716
 * If the SMB Authentication would fail, a LSA allocated memory
1607
1717
   buffer would be leaked.
1608
1718
 
1609
1719
 * Rewrite the cm_cell_t allocation code to permit cell vldb server
1616
1726
   the DLL load process.
1617
1727
 
1618
1728
 * When reporting the Volume Name "AFS" do not include the terminating
1619
 
   NUL in the reported length.  
1620
 
 
 
1729
   NUL in the reported length.
 
1730
 
1621
1731
 * Refresh Volume Location information upon receipt of a VNOVOL error
1622
1732
   from the file server and avoid a race condition that prevented the
1623
1733
   updated volume location information from being destroyed immediately
1624
1734
   after it was acquired.
1625
1735
 
1626
1736
 * In response to VNOVOL and VMOVED, remove the volume id from the server's
1627
 
   volume list so that the volume's up and down status is not affected 
 
1737
   volume list so that the volume's up and down status is not affected
1628
1738
   when the machine is shutdown.
1629
1739
 
1630
1740
 * Many fixes to the Rx stack related to packet allocation and deallocation;
1631
1741
   Rx debugging; Rx packet tracking across queues; and Rx packet loss caused
1632
 
   by overwriting the rx_call currentPacket pointer when it was already 
1633
 
   referring to a packet.  
 
1742
   by overwriting the rx_call currentPacket pointer when it was already
 
1743
   referring to a packet.
1634
1744
 
1635
1745
 * Rx Jumbograms are now off by default.  To re-enable, add "RxJumbo" = "1"
1636
1746
   in the TransarcAFSDeamon/Parameters key.
1637
1747
 
1638
 
 * "fs flush", "fs flushvolume", and "fs flushall" now destroy locally 
 
1748
 * "fs flush", "fs flushvolume", and "fs flushall" now destroy locally
1639
1749
   constructed directory B+ trees for flushed directory objects.
1640
1750
 
1641
1751
 * When cached pages for directory objects have been locally modified, do
1642
1752
   not permit the locally modified pages to be mixed with pages subsequently
1643
 
   obtained from the file server.  Doing so can result in directory 
 
1753
   obtained from the file server.  Doing so can result in directory
1644
1754
   corruption.
1645
1755
 
1646
1756
 * If Ubix errors are received in response to VL_xxx operations record
1647
 
   the error on the server instance and permit the operation request to 
 
1757
   the error on the server instance and permit the operation request to
1648
1758
   be retried in case another server is able to answer the query.  We have
1649
 
   seen at least one instance of a cell in which a VL server returned 
 
1759
   seen at least one instance of a cell in which a VL server returned
1650
1760
   UNOQUORUM (possible database truncation) when the other servers were
1651
1761
   responding successfully.
1652
1762
 
1653
1763
Since 1.5.51
1654
 
 * Optimize the assignment of write errors to dirty 
1655
 
   buffers by applying the first error to all buffers 
1656
 
   belonging to the same object instead of trying each 
 
1764
 * Optimize the assignment of write errors to dirty
 
1765
   buffers by applying the first error to all buffers
 
1766
   belonging to the same object instead of trying each
1657
1767
   buffer in turn.
1658
1768
 
1659
1769
 * Add resource version info to xstat_fs_test and xstat_cm_test
1660
 
 
1661
 
 * Fix a delete vs delete[] usage problem in the WiX custom 
 
1770
 
 
1771
 * Fix a delete vs delete[] usage problem in the WiX custom
1662
1772
   handler dll
1663
 
 
1664
 
 * When creating a mount point, validate the volume name to 
 
1773
 
 
1774
 * When creating a mount point, validate the volume name to
1665
1775
   make sure it exists.
1666
1776
 
1667
 
 * When processing a mount point, pay attention to VL_BADNAME 
 
1777
 * When processing a mount point, pay attention to VL_BADNAME
1668
1778
   errors.
1669
1779
 
1670
 
 * Remove a race condition from cm_volume_t recycling that could 
1671
 
   have resulted in two threads making use of the same object at 
 
1780
 * Remove a race condition from cm_volume_t recycling that could
 
1781
   have resulted in two threads making use of the same object at
1672
1782
   the same time.
1673
1783
 
1674
 
 * Fix a reference count leak on smb_vc_t objects introduced in 
 
1784
 * Fix a reference count leak on smb_vc_t objects introduced in
1675
1785
   1.5.50.  Permit the objects to be freed once again.
1676
1786
 
1677
 
 * Fix the output of "fs memdump" for smb_vc_t objects that was 
 
1787
 * Fix the output of "fs memdump" for smb_vc_t objects that was
1678
1788
   broken in 1.5.50.
1679
1789
 
1680
1790
 * Add routines for debugging smb refcount errors.
1681
1791
 
1682
 
 * When shutting down the cache manager, do not permit AFS 
1683
 
   callback requests to be processed. Doing so can result in 
 
1792
 * When shutting down the cache manager, do not permit AFS
 
1793
   callback requests to be processed. Doing so can result in
1684
1794
   invalid memory accesses.
1685
1795
 
1686
 
 * Do not recycle a deleted cm_scache_t object unless the 
1687
 
   refCount is 0.  Doing so can result in a deadlock and 
 
1796
 * Do not recycle a deleted cm_scache_t object unless the
 
1797
   refCount is 0.  Doing so can result in a deadlock and
1688
1798
   invalid memory access.
1689
1799
 
1690
 
 * Minimize the number of RPCs sent to the file server for 
1691
 
   directory bulk status requests. Only request status for 
1692
 
   objects that we are actually reporting on and only if we 
1693
 
   do not already have status for the object and then make 
1694
 
   sure that we return as much as we can at once via the SMB 
 
1800
 * Minimize the number of RPCs sent to the file server for
 
1801
   directory bulk status requests. Only request status for
 
1802
   objects that we are actually reporting on and only if we
 
1803
   do not already have status for the object and then make
 
1804
   sure that we return as much as we can at once via the SMB
1695
1805
   interface but not so much that it exceeds the RDR timeout
1696
1806
 
1697
1807
 * Enable bos restricted operations
1698
1808
 
1699
 
 * Fix the creation of submounts used by the afscreds and afs_config 
 
1809
 * Fix the creation of submounts used by the afscreds and afs_config
1700
1810
   drive mapping tabs.
1701
 
 
1702
 
 * Avoid repeated retries when attempting to obtain access rights.  
1703
 
   If the access rights were obtained successfully but do not 
 
1811
 
 
1812
 * Avoid repeated retries when attempting to obtain access rights.
 
1813
   If the access rights were obtained successfully but do not
1704
1814
   satisfy the request, fail the request.
1705
1815
 
1706
 
 * Fix error code reported when attempting delete a file on a 
1707
 
   readonly volume or one that is marked with the readonly DOS 
 
1816
 * Fix error code reported when attempting delete a file on a
 
1817
   readonly volume or one that is marked with the readonly DOS
1708
1818
   attribute.
1709
1819
 
1710
1820
 * Fix a short name truncation bug.
1711
1821
 
1712
 
 * Fix a heap corruption error when reading the CellServDB file 
 
1822
 * Fix a heap corruption error when reading the CellServDB file
1713
1823
   location.
1714
1824
 
1715
 
 * Fix directory listings when the directory has "lookup" permission 
 
1825
 * Fix directory listings when the directory has "lookup" permission
1716
1826
   only and the directory has never been previously accessed.
1717
1827
 
1718
1828
 * Fix several tracking issues for cm_scache_t rw locks.
1720
1830
 * Ensure that all buffers used to store cell names are the
1721
1831
   correct length.
1722
1832
 
1723
 
 * Restore Windows 2000 support (broken in 1.5.50).   
 
1833
 * Restore Windows 2000 support (broken in 1.5.50).
1724
1834
   LOCALE_INVARIANT was introduced in XP.
1725
1835
 
1726
1836
 * Add RxUdpBufSize registry value.  Default is 256K.
1727
1837
 
1728
1838
 * Avoid multiple deadlocks between cm_freelanceLock and cm_scacheLock
1729
1839
 
1730
 
 * Do not include trailing NULs when returning file names in 
 
1840
 * Do not include trailing NULs when returning file names in
1731
1841
   a directory search response.
1732
1842
 
1733
1843
 * Prevent RX from crashing the afsd_service by attempting
1756
1866
 * Fix installation of VC8 Runtime library in the EXE
1757
1867
   Retail installer. (broken in 1.5.50)
1758
1868
 
1759
 
 * Avoid a potential deadlock during Volume Location 
1760
 
   updates if all the file servers are unreachable at 
 
1869
 * Avoid a potential deadlock during Volume Location
 
1870
   updates if all the file servers are unreachable at
1761
1871
   the time the VL update succeeds.
1762
1872
 
1763
 
 * Ensure that rx connection object is references 
 
1873
 * Ensure that rx connection object is references
1764
1874
   during VL RPCs.
1765
1875
 
1766
1876
 * Fix propagation of over quota errors during cm_FSync()
1781
1891
   when the virtual circuit becomes invalid.
1782
1892
 
1783
1893
 * Remove the IBM Administration Reference documentation
1784
 
   and replace it with the OpenAFS Command Reference 
1785
 
   Manual.  
 
1894
   and replace it with the OpenAFS Command Reference
 
1895
   Manual.
1786
1896
 
1787
1897
 * Avoid calling rx_SetDeadTime and rx_SetHardDeadTime
1788
1898
   functions each time a connection is about to be used.
1789
1899
   Do not hold a lock on the rx connection object while
1790
 
   it is being selected.  This avoids a race between 
1791
 
   threads attempting to set the timeout values and 
 
1900
   it is being selected.  This avoids a race between
 
1901
   threads attempting to set the timeout values and
1792
1902
   removes a bottleneck that was hampering performance.
1793
1903
 
1794
 
 * Ensure that the smb directory attribute is set 
 
1904
 * Ensure that the smb directory attribute is set
1795
1905
   for all directory objects.
1796
1906
 
1797
1907
 * Add vs2008 support to the NSIS installer scripts
1799
1909
 * Replace the VC Runtime EXE installer with the MSI
1800
1910
   installer in the NSIS installer scripts
1801
1911
 
1802
 
 * Properly delete the VC7.1 C Runtime libraries.   
 
1912
 * Properly delete the VC7.1 C Runtime libraries.
1803
1913
 
1804
1914
Since 1.5.36 [1.5.39 released 23 June 2008]
1805
1915
 * There were no 1.5.37 or 1.5.38 releases for Windows
1806
1916
 
1807
 
 * Use Visual Studio version of vsprintf() instead of 
 
1917
 * Use Visual Studio version of vsprintf() instead of
1808
1918
   home grown version that resulted in linking conflicts
1809
1919
 
1810
1920
 * Prevent buserver, ptserver and fileserver from crashing
1819
1929
   allocation would be leaked during object deletion or
1820
1930
   tree destruction.
1821
1931
 
1822
 
 * Fixed a memory leak in the background daemon cm_CheckServer() 
 
1932
 * Fixed a memory leak in the background daemon cm_CheckServer()
1823
1933
   routine.  The memory allocated to store the server list
1824
 
   was not freed.  
1825
 
 
1826
 
 * Obtain a missing lock around a call to cm_RemoveSCacheFromHashTable(). 
1827
 
 
1828
 
 * Correct an abstraction layer violation. cm_scache_t objects 
1829
 
   should be marked deleted in cm_Unlink() and cm_RemoveDir() and not 
1830
 
   in smb_CloseFID(). Cleanup of deleted cm_scache_t objects should be 
1831
 
   performed in cm_ReleaseSCache() when the reference count hits zero. 
 
1934
   was not freed.
 
1935
 
 
1936
 * Obtain a missing lock around a call to cm_RemoveSCacheFromHashTable().
 
1937
 
 
1938
 * Correct an abstraction layer violation. cm_scache_t objects
 
1939
   should be marked deleted in cm_Unlink() and cm_RemoveDir() and not
 
1940
   in smb_CloseFID(). Cleanup of deleted cm_scache_t objects should be
 
1941
   performed in cm_ReleaseSCache() when the reference count hits zero.
1832
1942
 
1833
1943
 * Prototype cm_AdjustScacheLRU() and re-implement it using osi_QAddH().
1834
1944
 
1840
1950
 
1841
1951
 * If a dirty buffer cannot be written to the file server because
1842
1952
   of an access denied error, mark the error in the cm_buf_t
1843
 
   structure so that it can be dealt with instead of retrying 
 
1953
   structure so that it can be dealt with instead of retrying
1844
1954
   forever.
1845
1955
 
1846
1956
Since 1.5.35
1847
1957
 * Update CellServDB file to GCO Public 23 Apr 2008
1848
1958
 
1849
 
 * Fix a cm_buf_t reference count leak when attempts to write 
1850
 
   dirty buffers to the file server from within cm_IncrSyncer() 
 
1959
 * Fix a cm_buf_t reference count leak when attempts to write
 
1960
   dirty buffers to the file server from within cm_IncrSyncer()
1851
1961
   fail.
1852
1962
 
1853
1963
 * Prevent udebug from crashing.
1854
1964
 
1855
 
 * Activate RX Idle Timeouts.  If the file server is busy for more 
1856
 
   then 30 seconds, attempt to failover to another server without 
 
1965
 * Activate RX Idle Timeouts.  If the file server is busy for more
 
1966
   then 30 seconds, attempt to failover to another server without
1857
1967
   marking the busy server down.
1858
1968
 
1859
1969
 * Another VNOVNODE issue fixed.  When writing a dirty buffer
1860
1970
   to the file server, if VNOVNODE is received, mark all buffers
1861
1971
   as invalid without further attempts to contact the file server.
1862
 
   
 
1972
 
1863
1973
 * Improved performance on high latency links.
1864
1974
 
1865
1975
Since 1.5.34
1866
 
 * Fix a bug preventing the re-initialization of the Freelance 
 
1976
 * Fix a bug preventing the re-initialization of the Freelance
1867
1977
   root.cell contents when a change is made.
1868
1978
 
1869
 
 * Properly return CM_ERROR_NOSUCHFILE when removing a symlink 
 
1979
 * Properly return CM_ERROR_NOSUCHFILE when removing a symlink
1870
1980
   or mountpoint that does not exist.
1871
1981
 
1872
 
 * aklog, afscreds, integrated logon, and the NIM AFS credential 
1873
 
   provider will all attempt to first acquire an afs service ticket 
1874
 
   using the service principal: afs/<cell>@<CLIENT_REALM>.  This 
1875
 
   permits the proper detection of the cell realm when multiple 
 
1982
 * aklog, afscreds, integrated logon, and the NIM AFS credential
 
1983
   provider will all attempt to first acquire an afs service ticket
 
1984
   using the service principal: afs/<cell>@<CLIENT_REALM>.  This
 
1985
   permits the proper detection of the cell realm when multiple
1876
1986
   realms are local realms for the cell.
1877
1987
 
1878
 
 * Fix fs commands that re-use file identifiers instead of forcing 
1879
 
   a path evaluation each time.  This was broken in 1.5.33 when 
 
1988
 * Fix fs commands that re-use file identifiers instead of forcing
 
1989
   a path evaluation each time.  This was broken in 1.5.33 when
1880
1990
   hashes were added to the cm_fid_t structure.
1881
1991
 
1882
 
 * Fix symlink and mountpoint removal and then recreation when 
 
1992
 * Fix symlink and mountpoint removal and then recreation when
1883
1993
   applied to the fake Freelance root.afs volume.
1884
1994
 
1885
 
 * Fix SMB change notifications for the Freelance root.afs volume 
 
1995
 * Fix SMB change notifications for the Freelance root.afs volume
1886
1996
   when creating or removing symlinks and mount points.
1887
1997
 
1888
 
 * Force DNS AFSDB cell name lookups to lower case if the DNS 
 
1998
 * Force DNS AFSDB cell name lookups to lower case if the DNS
1889
1999
   response is not all lower case.
1890
2000
 
1891
2001
 * 32-bit installers are now built with Visual Studio 2005
1892
2002
 
1893
 
 * All vos.exe commands now support the "-noresolve" option which 
 
2003
 * All vos.exe commands now support the "-noresolve" option which
1894
2004
   forces the display of IP addresses instead of DNS hostnames.
1895
2005
 
1896
 
 * No longer hold the cm_volume_t mutex across VL_xxx RPCs.  This 
1897
 
   permits operations that do not require up to date volume 
1898
 
   location data to continue while waiting for the RPC to complete.  
1899
 
   Multiple threads waiting for a volume location update on the 
 
2006
 * No longer hold the cm_volume_t mutex across VL_xxx RPCs.  This
 
2007
   permits operations that do not require up to date volume
 
2008
   location data to continue while waiting for the RPC to complete.
 
2009
   Multiple threads waiting for a volume location update on the
1900
2010
   same volume set no longer trigger multiple calls VL_xxx RPCs.
1901
2011
 
1902
 
 * Volume server references could be marked offline and never 
1903
 
   reset to the not_busy state.  
 
2012
 * Volume server references could be marked offline and never
 
2013
   reset to the not_busy state.
1904
2014
 
1905
 
 * Further optimizations to cm_Analyze() retry logic for 
 
2015
 * Further optimizations to cm_Analyze() retry logic for
1906
2016
   CM_ERROR_OFFLINE and CM_ERROR_ALLBUSY error handling.
1907
2017
 
1908
2018
Since 1.5.33
1909
 
 * Optimize the DNLC by applying Interlocked incrementing for 
1910
 
   statistics gathering and enabling greater use of read 
 
2019
 * Optimize the DNLC by applying Interlocked incrementing for
 
2020
   statistics gathering and enabling greater use of read
1911
2021
   locks instead of write locks
1912
2022
 
1913
 
 * Further optimize osi_Log operations when logging is disabled 
 
2023
 * Further optimize osi_Log operations when logging is disabled
1914
2024
   by removing the need for the function call overhead.
1915
2025
 
1916
 
 * Add a new lock operation, Convert Read to Write, and apply 
1917
 
   it throughout the cache manager.  This function provides a 
1918
 
   fast transition from a read lock to a write lock when the 
 
2026
 * Add a new lock operation, Convert Read to Write, and apply
 
2027
   it throughout the cache manager.  This function provides a
 
2028
   fast transition from a read lock to a write lock when the
1919
2029
   caller is the only reader.
1920
2030
 
1921
 
 * Fix a timeout problem when opening files or request locks 
1922
 
   when the file in question is already write-locked by another 
 
2031
 * Fix a timeout problem when opening files or request locks
 
2032
   when the file in question is already write-locked by another
1923
2033
   machine.
1924
2034
 
1925
 
 * Fix a deadlock that can occur if "fs flushall" is executed 
 
2035
 * Fix a deadlock that can occur if "fs flushall" is executed
1926
2036
   while applications are writing to AFS.
1927
2037
 
1928
 
 * The cache manager would re-read data from the file server 
 
2038
 * The cache manager would re-read data from the file server
1929
2039
   after file truncation when obtaining buffers to write to the
1930
2040
   same file until the first StoreData RPC completes.
1931
2041
 
1932
2042
 * Fixes error handling in cm_NTCheckDelete()
1933
2043
 
1934
 
 * Replaces cm_scache_t mutex with a read-write lock permitting 
 
2044
 * Replaces cm_scache_t mutex with a read-write lock permitting
1935
2045
   additional parallel access.
1936
2046
 
1937
 
 * Prevent an cm_scache_t reference undercount when evaluating 
1938
 
   symlinks containing @sys when none of the active sysnames 
 
2047
 * Prevent an cm_scache_t reference undercount when evaluating
 
2048
   symlinks containing @sys when none of the active sysnames
1939
2049
   match any of the available targets.
1940
2050
 
1941
 
 * Prevent the leak of a cm_scache_t rwlock if associated symlink 
 
2051
 * Prevent the leak of a cm_scache_t rwlock if associated symlink
1942
2052
   is too long.
1943
2053
 
1944
 
 * Set RxMaxMTU registry value to 0 which is the equivalent of 
 
2054
 * Set RxMaxMTU registry value to 0 which is the equivalent of
1945
2055
   it not being set at all.
1946
2056
 
1947
2057
 * Reduce contention between BkgDaemon threads
1948
2058
 
1949
 
 * Prevent CM_SCACHEFLAG_ASYNCSTORE from being reset on a write 
 
2059
 * Prevent CM_SCACHEFLAG_ASYNCSTORE from being reset on a write
1950
2060
   failure
1951
2061
 
1952
 
 * Convert reference counts on cm_volume_t, cm_conn_t, cm_server_t 
1953
 
   objects to use the faster Interlocked operations which avoid 
 
2062
 * Convert reference counts on cm_volume_t, cm_conn_t, cm_server_t
 
2063
   objects to use the faster Interlocked operations which avoid
1954
2064
   the need to hold write locks.
1955
2065
 
1956
 
 * Permit rxkad errors other than RXKADEXPIRED to be treated as a 
1957
 
   non-fatal error that forces a retry against another service 
 
2066
 * Permit rxkad errors other than RXKADEXPIRED to be treated as a
 
2067
   non-fatal error that forces a retry against another service
1958
2068
   (if available.)
1959
2069
 
1960
 
 * Fix a crash in smb_WriteData that would occur if an application 
1961
 
   opened the file as read-only and then sent a write request anyway.  
 
2070
 * Fix a crash in smb_WriteData that would occur if an application
 
2071
   opened the file as read-only and then sent a write request anyway.
1962
2072
   (RT 88731)
1963
2073
 
1964
2074
 * Respond to VL_NOENT errors by removing cm_volume_t object and
1965
 
   setting it to be the first object to be recycled.  This is not 
1966
 
   only a more efficient use of resources but it also prevents 
1967
 
   repeated attempts to query the VLDB server for the volume from 
 
2075
   setting it to be the first object to be recycled.  This is not
 
2076
   only a more efficient use of resources but it also prevents
 
2077
   repeated attempts to query the VLDB server for the volume from
1968
2078
   the CheckOfflineVolumes routine.
1969
2079
 
1970
 
 * Change the defaults for RxEnablePeerStats and RxEnableProcessStats 
 
2080
 * Change the defaults for RxEnablePeerStats and RxEnableProcessStats
1971
2081
   back to "on".
1972
2082
 
1973
 
 * A first cut at a cache manager statistics monitor that can be used 
1974
 
   to determine the necessary cache parameters to support the 
 
2083
 * A first cut at a cache manager statistics monitor that can be used
 
2084
   to determine the necessary cache parameters to support the
1975
2085
   application working set.
1976
2086
 
1977
 
   Off by default, the performance package can be activated by setting 
1978
 
   "daemonPerformanceTuningInterval" in the service Parameters key.  
 
2087
   Off by default, the performance package can be activated by setting
 
2088
   "daemonPerformanceTuningInterval" in the service Parameters key.
1979
2089
   As with the other daemon interval values the unit is in seconds.
1980
2090
 
1981
 
   At service start and each succeeding interval the cache manager 
1982
 
   will write statistics to %TEMP%\afsd_performance.txt showing the 
1983
 
   relative usage of cm_scache_t, cm_volume_t and cm_buf_t objects.  
1984
 
   The FID statistics keep track of all FIDs seen by the cache manager 
1985
 
   during the service session whether or not they are backed by any 
 
2091
   At service start and each succeeding interval the cache manager
 
2092
   will write statistics to %TEMP%\afsd_performance.txt showing the
 
2093
   relative usage of cm_scache_t, cm_volume_t and cm_buf_t objects.
 
2094
   The FID statistics keep track of all FIDs seen by the cache manager
 
2095
   during the service session whether or not they are backed by any
1986
2096
   live object in the cache.
1987
2097
 
1988
2098
   These statistics are not stored in the cache file.
1989
2099
 
1990
2100
 * Fix windows event logging broken in 1.5.33.
1991
2101
 
1992
 
 * Eliminate multiple calls to syscfg_GetIFInfo() which is used to 
 
2102
 * Eliminate multiple calls to syscfg_GetIFInfo() which is used to
1993
2103
   populate the IP address list for WhoAreYou/TellMeAboutYourself RPCs
1994
2104
   as well as when computing the server preference list.
1995
2105
 
1996
 
 * When merging status after a StoreData operation prevent data 
1997
 
   buffers from being discarded that we would prefer to keep.  
 
2106
 * When merging status after a StoreData operation prevent data
 
2107
   buffers from being discarded that we would prefer to keep.
1998
2108
   (Bug introduced in 1.5.33.)
1999
2109
 
2000
2110
 * Modify installers the set RxMaxMTU to 0.
2001
2111
 
2002
 
 * In the AFS Configuration Panel on the Advanced->Miscellaneous 
2003
 
   dialog, the Background Daemons and Service Threads fields were 
 
2112
 * In the AFS Configuration Panel on the Advanced->Miscellaneous
 
2113
   dialog, the Background Daemons and Service Threads fields were
2004
2114
   swapped.
2005
2115
 
2006
2116
 * Increase default number of Background Daemons to 4.
2007
2117
 
2008
 
 * Remove cm_volume_t reference from the cm_scache_t object.  Permit 
 
2118
 * Remove cm_volume_t reference from the cm_scache_t object.  Permit
2009
2119
   cm_volume_t objects to be recycled.
2010
2120
 
2011
 
 * Windows Error Reporting has shown a number of previously unseen 
2012
 
   stack corruption errors in the Explorer Shell extension.  The 
2013
 
   minidump appeared to indicate the problem was in ParseAcl().  
2014
 
   Reviewing the function it appears that numerous things could go 
2015
 
   wrong if invalid input was provided.  Added error checking and 
 
2121
 * Windows Error Reporting has shown a number of previously unseen
 
2122
   stack corruption errors in the Explorer Shell extension.  The
 
2123
   minidump appeared to indicate the problem was in ParseAcl().
 
2124
   Reviewing the function it appears that numerous things could go
 
2125
   wrong if invalid input was provided.  Added error checking and
2016
2126
   data validation.  Hopefully this will address the problem.
2017
2127
 
2018
2128
 * Windows Error Reporting has shown crashes in aklog as a result
2021
2131
 
2022
2132
Since 1.5.32
2023
2133
 * The Rx library used a 32-bit type for sockets which was
2024
 
   truncating the socket value on 64-bit Windows.  This 
2025
 
   was not an issue in general but became an issue when 
 
2134
   truncating the socket value on 64-bit Windows.  This
 
2135
   was not an issue in general but became an issue when
2026
2136
   Rx "hot thread" support was enabled.
2027
2137
 
2028
2138
 * Enable "Rx hot thread" support which ensures that while
2029
2139
   a received message is being processed that a new thread
2030
2140
   is allocated to receive the next message to arrive.
2031
2141
 
2032
 
 * Increased parallel access to smb_rctLock protected 
2033
 
   resources.  Reduce the number of times that the 
 
2142
 * Increased parallel access to smb_rctLock protected
 
2143
   resources.  Reduce the number of times that the
2034
2144
   lock is dropped and re-obtained.
2035
2145
 
2036
2146
 * Increased parallel access to cm_scache_t and cm_buf_t
2041
2151
 * Implement a hash for cm_fid_t to reduce comparison costs
2042
2152
   and inline the cm_FidCmp() function.
2043
2153
 
2044
 
 * Redefine the BUF_HASH and BUF_FILEHASH in terms of the cm_fid_t 
 
2154
 * Redefine the BUF_HASH and BUF_FILEHASH in terms of the cm_fid_t
2045
2155
   hash which has a better distribution
2046
2156
 
2047
 
 * Modify cm_ConsiderPrefetch to evaluate the amount of data in 
2048
 
   the most recent read request instead of the next chunkSize.  
 
2157
 * Modify cm_ConsiderPrefetch to evaluate the amount of data in
 
2158
   the most recent read request instead of the next chunkSize.
2049
2159
   cm_chunkSize can be dozens or hundreds of buffers.  As a result
2050
2160
   too much time is spent performing the evaluation.
2051
2161
 
2052
 
 * Fix the usage of cm_scache_t bufCreateLock.  The purpose of this 
2053
 
   lock is to prevent the creation of new buffers while a truncation 
2054
 
   is being performed.  All references to bufCreateLock have been 
 
2162
 * Fix the usage of cm_scache_t bufCreateLock.  The purpose of this
 
2163
   lock is to prevent the creation of new buffers while a truncation
 
2164
   is being performed.  All references to bufCreateLock have been
2055
2165
   removed except in two places:
2056
2166
   i.  a write-lock surrounding the function that calls buf_Truncate()
2057
 
   ii. a read-lock within buf_GetNewLocked() that actually allocates 
 
2167
   ii. a read-lock within buf_GetNewLocked() that actually allocates
2058
2168
       new buffers
2059
2169
 
2060
 
 * Modify the CM_CONFIG_DATA_MAGIC value to include a 
2061
 
   CM_CONFIG_DATA_VERSION number which value be used to force the 
2062
 
   replacement of the cache file contents when incompatible changes 
 
2170
 * Modify the CM_CONFIG_DATA_MAGIC value to include a
 
2171
   CM_CONFIG_DATA_VERSION number which value be used to force the
 
2172
   replacement of the cache file contents when incompatible changes
2063
2173
   are made between releases.
2064
2174
 
2065
 
 * CM_SCACHESYNC_ASYNCSTORE should not be ordered by 
 
2175
 * CM_SCACHESYNC_ASYNCSTORE should not be ordered by
2066
2176
   cm_SyncOpCheckContinue
2067
2177
 
2068
2178
 * Avoid calls to multi_Rx if nconns == 0
2069
2179
 
2070
 
 * Modify smb_WriteData to perform background writes based upon the 
2071
 
   crossing of 'smb_AsyncStoreSize' boundaries instead of cm_chunkSize 
2072
 
   boundaries.  This will slow down writes from the SMB interface but 
2073
 
   will avoid the risk of the CIFS client disconnecting from the AFS 
 
2180
 * Modify smb_WriteData to perform background writes based upon the
 
2181
   crossing of 'smb_AsyncStoreSize' boundaries instead of cm_chunkSize
 
2182
   boundaries.  This will slow down writes from the SMB interface but
 
2183
   will avoid the risk of the CIFS client disconnecting from the AFS
2074
2184
   client SMB server.  The default value for 'smb_AsyncStoreSize'
2075
 
   is 128K.  
 
2185
   is 128K.
2076
2186
 
2077
 
 * SMB AsyncStore functionality is on by default but can be 
 
2187
 * SMB AsyncStore functionality is on by default but can be
2078
2188
   disabled using the registry value:
2079
2189
 
2080
2190
     HKLM\SOFTWARE\OpenAFS\Client DWORD "EnableSMBAsyncStore"
2081
2191
 
2082
 
   smb_AsyncStoreSize can be adjusted with 
 
2192
   smb_AsyncStoreSize can be adjusted with
2083
2193
 
2084
2194
     HKLM\SOFTWARE\OpenAFS\Client DWORD "SMBAsyncStoreSize"
2085
2195
 
2086
 
   The value must be a multiple of the buffer block size 
 
2196
   The value must be a multiple of the buffer block size
2087
2197
   and cannot be larger than the chunk size.
2088
2198
 
2089
2199
 * Do not leak a read lock on the bufCreateLock
2093
2203
 
2094
2204
 * In MergeStatus, only remove clean buffers from the hash table.
2095
2205
 
2096
 
 * Avoid the need to update the data version number on each buffer 
2097
 
   associated with a scache when MergeStatus is called after a 
2098
 
   StoreData by maintaining a range of valid data versions as part 
 
2206
 * Avoid the need to update the data version number on each buffer
 
2207
   associated with a scache when MergeStatus is called after a
 
2208
   StoreData by maintaining a range of valid data versions as part
2099
2209
   of the cm_scache_t object.
2100
2210
 
2101
2211
 * Profiling shows large numbers of blocked calls in cm_HoldSCache
2115
2225
   This happens under Vista UAC.
2116
2226
 
2117
2227
 * Do not return BAD_NETWORK_ERROR in response to attempts
2118
 
   to create directories or files in the Freelance root.afs 
 
2228
   to create directories or files in the Freelance root.afs
2119
2229
   volume.  Instead return ACCESS_DENIED.
2120
2230
 
2121
 
   BAD_NETWORK_ERROR was being sent because the Freelance cell 
2122
 
   has no vldb servers.  Short circuit the error by testing for 
 
2231
   BAD_NETWORK_ERROR was being sent because the Freelance cell
 
2232
   has no vldb servers.  Short circuit the error by testing for
2123
2233
   freelance in CreateFile and MakeDir
2124
2234
 
2125
 
 * Treat srvsvc, wkssvc and ipc$ as pseudo files.  Permit them 
2126
 
   to be opened and closed without actually existing.  For now 
2127
 
   we treat them as equivalent to ioctls but this should 
 
2235
 * Treat srvsvc, wkssvc and ipc$ as pseudo files.  Permit them
 
2236
   to be opened and closed without actually existing.  For now
 
2237
   we treat them as equivalent to ioctls but this should
2128
2238
   eventually change.
2129
2239
 
2130
 
 * Fix RAP processing to not reject names that exist in the 
 
2240
 * Fix RAP processing to not reject names that exist in the
2131
2241
   root.afs volume for GetInfo queries.
2132
2242
 
2133
 
 * In afscreds, use GetUserNameEx to obtain the username instead 
2134
 
   of searching the registry.  Try UserPrincipalName first and 
 
2243
 * In afscreds, use GetUserNameEx to obtain the username instead
 
2244
   of searching the registry.  Try UserPrincipalName first and
2135
2245
   fallback to SamCompatible.
2136
2246
 
2137
 
 * Stop linking to rpcns4.dll which is no longer supported on 
2138
 
   Vista and 2008.  TaAfsAdmSvr is going to have to be 
 
2247
 * Stop linking to rpcns4.dll which is no longer supported on
 
2248
   Vista and 2008.  TaAfsAdmSvr is going to have to be
2139
2249
   redesigned.
2140
2250
 
2141
 
 * When processing dfs referral requests, if the sharename is 
2142
 
   a partial match and therefore will not be added automatically 
 
2251
 * When processing dfs referral requests, if the sharename is
 
2252
   a partial match and therefore will not be added automatically
2143
2253
   to the share list, make sure that we return an error.
2144
2254
 
2145
 
 * Avoid a crash when logging VNOVOL errors returned from 
 
2255
 * Avoid a crash when logging VNOVOL errors returned from
2146
2256
   cm_CheckOfflineVolume.
2147
2257
 
2148
 
 * When trace logging is disabled, do not permit osi_LogSaveString 
2149
 
   to perform the string copying.  By disabling the string 
 
2258
 * When trace logging is disabled, do not permit osi_LogSaveString
 
2259
   to perform the string copying.  By disabling the string
2150
2260
   copies, throughput of the service more than doubles.
2151
2261
 
2152
2262
 * when checking offline volumes, update the cell vlserver info
2177
2287
   Instead return STATUS_NO_KERB_KEY error.
2178
2288
 
2179
2289
Since 1.5.30
2180
 
 * Add "cmdebug <host> -cellservdb" option and client service 
2181
 
   implementation permits querying the vldb server for each 
 
2290
 * Add "cmdebug <host> -cellservdb" option and client service
 
2291
   implementation permits querying the vldb server for each
2182
2292
   cell known to the cache manager.  The output is in a form
2183
2293
   that permits it to be used as a CellServDB file.
2184
2294
 
2190
2300
 
2191
2301
 * The path ioctl operations have several issues:
2192
2302
 
2193
 
   (1) the specified path for "fs examine, whereis, whichcell, 
2194
 
       flush" and so always has the follow symlinks and mount 
2195
 
       points semantics.  This makes it impossible to determine 
 
2303
   (1) the specified path for "fs examine, whereis, whichcell,
 
2304
       flush" and so always has the follow symlinks and mount
 
2305
       points semantics.  This makes it impossible to determine
2196
2306
       what the FID of a symlink or mount point is.
2197
2307
 
2198
 
   (2) "fs examine" out is not the result of a single pioctl 
2199
 
        operation but is actually the combined output of half 
2200
 
        a dozen operations.  Path evaluation is an expensive 
 
2308
   (2) "fs examine" out is not the result of a single pioctl
 
2309
        operation but is actually the combined output of half
 
2310
        a dozen operations.  Path evaluation is an expensive
2201
2311
        operation.  It would be faster if the caller could
2202
 
        evaluate the FID first and then perform all of the 
2203
 
        rest of the operations by specifying the FID instead 
 
2312
        evaluate the FID first and then perform all of the
 
2313
        rest of the operations by specifying the FID instead
2204
2314
        of the path.
2205
2315
 
2206
 
   (3) fs output reports all objects as files.  By adding a 
2207
 
       GetFileType pioctl more informative output can be provided 
 
2316
   (3) fs output reports all objects as files.  By adding a
 
2317
       GetFileType pioctl more informative output can be provided
2208
2318
       that indicates what type of object the path evaluates to.
2209
2319
 
2210
 
   (4) the Windows fs command includes a number of commands that 
2211
 
       do nothing but exist only because the Unix cache manager 
 
2320
   (4) the Windows fs command includes a number of commands that
 
2321
       do nothing but exist only because the Unix cache manager
2212
2322
       supports them.
2213
2323
 
2214
 
   A new extendible data structure cm_ioctl_query_opts_t has been 
 
2324
   A new extendible data structure cm_ioctl_query_opts_t has been
2215
2325
   added which can be optionally specified with pioctls that do not
2216
 
   already require input data.  The first two fields of this structure 
 
2326
   already require input data.  The first two fields of this structure
2217
2327
   are 'literal' and 'fid'.  The literal field is used to indicate
2218
 
   whether the last component of the path should be evaluated following 
 
2328
   whether the last component of the path should be evaluated following
2219
2329
   symlinks and mount points.
2220
2330
 
2221
2331
   The fid field permits a fid to be specified.
2222
2332
 
2223
 
 * A new GetFileType pioctl has been added. The type of objects are 
 
2333
 * A new GetFileType pioctl has been added. The type of objects are
2224
2334
   now output.
2225
2335
 
2226
 
 * A new "-literal" option is available for "fs examine, flush, whereis, 
 
2336
 * A new "-literal" option is available for "fs examine, flush, whereis,
2227
2337
   and whichcell.
2228
2338
 
2229
2339
 * Unimplemented fs commands have been removed.
2230
 
   
2231
 
 * There are circumstances where a volume object is being accessed and 
2232
 
   the volume is marked indicating that the volume location information 
2233
 
   is out of date but where it is also pointless and perhaps dangerous 
2234
 
   to block waiting for the rpc to complete.  One example is when 
2235
 
   processing the cmdebug requests.  If we know that we are not going 
2236
 
   to use the volume object to contact a server, then we can now set 
 
2340
 
 
2341
 * There are circumstances where a volume object is being accessed and
 
2342
   the volume is marked indicating that the volume location information
 
2343
   is out of date but where it is also pointless and perhaps dangerous
 
2344
   to block waiting for the rpc to complete.  One example is when
 
2345
   processing the cmdebug requests.  If we know that we are not going
 
2346
   to use the volume object to contact a server, then we can now set
2237
2347
   the CM_GETVOL_FLAG_NO_RESET flag.
2238
2348
 
2239
 
 * when moving up in the directory tree we search the recorded fid list 
2240
 
   to find a matching fid that we have already crossed.  we must also 
 
2349
 * when moving up in the directory tree we search the recorded fid list
 
2350
   to find a matching fid that we have already crossed.  we must also
2241
2351
   reset the fid count based upon what we discover.
2242
2352
 
2243
2353
 * Cell names are published as share names.  As a result they are searched
2249
2359
   the freelance root.afs volume.  This patch prevents that negative side
2250
2360
   effect.
2251
2361
 
2252
 
 * when tracking Kerberos credential cache names be sure to include 
 
2362
 * when tracking Kerberos credential cache names be sure to include
2253
2363
   the cache type prefix.
2254
2364
 
2255
2365
 * Microsoft has assigned OpenAFS a network type value
2261
2371
   Also, the "NetbiosName" value was not used as a suffix when the loopback
2262
2372
   adapter was not installed.  The hardcoded string "AFS" was used instead.
2263
2373
 
2264
 
 * avoid another deadlock during server probes initiated by the ipaddr 
 
2374
 * avoid another deadlock during server probes initiated by the ipaddr
2265
2375
   change daemon thread.
2266
2376
 
2267
 
 * prevent the afs client service from crashing when fs newcell is 
 
2377
 * prevent the afs client service from crashing when fs newcell is
2268
2378
   executed
2269
2379
 
2270
 
 * In the NSIS installer, move afslogon.dll, afscpcc.exe and afs_cpa.cpl 
 
2380
 * In the NSIS installer, move afslogon.dll, afscpcc.exe and afs_cpa.cpl
2271
2381
   to \Program Files\OpenAFS\Client\Program in order to get them out
2272
2382
   of the %windir% tree
2273
2383
 
2274
 
 * EDQUOT == WSAEDQUOT.   Define it in the right places so that in the 
 
2384
 * EDQUOT == WSAEDQUOT.   Define it in the right places so that in the
2275
2385
   end STATUS_OUT_OF_QUOTA can be returned to the application.
2276
2386
 
2277
2387
 * Modify the search order for determining the location of CellServDB
2291
2401
 * Convert downTimes to use clock time instead of relative times.
2292
2402
   This permits correct comparisons with expiration times.
2293
2403
 
2294
 
 * Update the Wix installer to properly install the prerequisites 
 
2404
 * Update the Wix installer to properly install the prerequisites
2295
2405
   for translate_et.exe
2296
2406
 
2297
2407
 * Do not translate pioctl paths as they are not converted by the
2298
2408
   file system stack.
2299
2409
 
2300
2410
 * Implement multi_rx probes for checking whether servers are up
2301
 
   or down.  Turns probes into a constant time activity instead 
 
2411
   or down.  Turns probes into a constant time activity instead
2302
2412
   of one dependent upon the number of known servers.
2303
2413
 
2304
2414
 * Treat VNOVOL errors the same as VOFFLINE.  Do not force an
2311
2421
   method of doing so.
2312
2422
 
2313
2423
 * Improve performance of \\afs\<cell><mount-type><volume>\
2314
 
   access by eliminating extraneous attempts to search the 
2315
 
   CellServDB file and DNS AFSDB records.  Share names 
 
2424
   access by eliminating extraneous attempts to search the
 
2425
   CellServDB file and DNS AFSDB records.  Share names
2316
2426
   containing '%' or '#' are not valid cell names.
2317
2427
 
2318
2428
 * Return STATUS_RANGE_NOT_LOCKED if the application attempts
2320
2430
 
2321
2431
 * Enable the 32-bit tools to read the 64-bit registry keys
2322
2432
   when executing in the WOW64 environment.
2323
 
   
 
2433
 
2324
2434
 
2325
2435
Since 1.5.29
2326
2436
 * Fix buffer refcount leak introduced in 1.5.29
2327
2437
 
2328
 
 * Prevent the NIM AFS Provider from crashing when configured to use 
 
2438
 * Prevent the NIM AFS Provider from crashing when configured to use
2329
2439
   Kerberos v4 for token acquisition in situations where no Kerberos v4
2330
2440
   support is available.  For example, 64-bit KFW or sites that delete
2331
2441
   the Kerberos v4 DLL.
2334
2444
 
2335
2445
 * The volume status output of "fs examine" was being determined based
2336
2446
   upon the wrong error value.  Instead of using the pioctl() return
2337
 
   code, the errno value must be used.  
 
2447
   code, the errno value must be used.
2338
2448
 
2339
 
 * Prevent invalid pts auto-registration attempts by aklog and the 
 
2449
 * Prevent invalid pts auto-registration attempts by aklog and the
2340
2450
   NIM afs provider when Kerberos referrals are in use.  (krb5 1.6+)
2341
2451
 
2342
 
 * Add synchronization protection to all of the SMB Listener State 
 
2452
 * Add synchronization protection to all of the SMB Listener State
2343
2453
   variables.  This prevents race conditions when the addition or
2344
2454
   loss of a network adapter takes place.
2345
2455
 
2346
 
 * On Vista, there is a race condition between the restart of the 
2347
 
   afs client service and the network adapters.  Ensure that the 
2348
 
   afs client service can handle switching between loopback and 
 
2456
 * On Vista, there is a race condition between the restart of the
 
2457
   afs client service and the network adapters.  Ensure that the
 
2458
   afs client service can handle switching between loopback and
2349
2459
   non-loopback modes of operation.
2350
2460
 
2351
 
 * Fix FollowBackupPath to work with mount points that are not 
 
2461
 * Fix FollowBackupPath to work with mount points that are not
2352
2462
   explicitly read/write.
2353
2463
 
2354
2464
 * Fix a deadlock that has been observed on Vista while resuming
2355
2465
   after at least four hours of sleep.
2356
2466
 
2357
 
 * Add new HKLM registry configuration options that can be used 
2358
 
   to provide configuration hints to the NIM AFS Provider when 
 
2467
 * Add new HKLM registry configuration options that can be used
 
2468
   to provide configuration hints to the NIM AFS Provider when
2359
2469
   creating new identities.  See release notes for details on
2360
2470
   HKLM\SOFTWARE\OpenAFS\Client\Realms\.
2361
2471
 
2362
2472
Since 1.5.28
2363
2473
 * Speed up write buffer operations by holding a global read-lock
2364
 
   instead of a write-lock when updating the buffer data version 
 
2474
   instead of a write-lock when updating the buffer data version
2365
2475
   number.  The data version is protect by the associated stat
2366
2476
   cache mutex.
2367
2477
 
2370
2480
 
2371
2481
 * Protect against a null pointer dereference in afslogon.dll
2372
2482
   if QueryAdHomePathFromSid() fails.
2373
 
   
 
2483
 
2374
2484
 * Remove a race condition while accessing private freelance data
2375
2485
   structures.
2376
2486
 
2378
2488
   changes.
2379
2489
 
2380
2490
 * Complete the implementation of smb_ReceiveTran2GetDFSReferral().
2381
 
   Critical for Vista.  
 
2491
   Critical for Vista.
2382
2492
 
2383
 
 * Return EAS_NOT_SUPPORTED in response to EA read/store/query 
 
2493
 * Return EAS_NOT_SUPPORTED in response to EA read/store/query
2384
2494
   instead of returning zero length.
2385
2495
 
2386
2496
 * Return ERROR_RETRY when a server sends VBUSY.
2397
2507
 * Fix a crash at shutdown caused by the lack of synchronization
2398
2508
   within the daemon threads (cm_Daemon, cm_BkgDaemon, cm_IPAddrDaemon)
2399
2509
 
2400
 
 * Hold the cm_server_t mutex while walking or modifying the 
 
2510
 * Hold the cm_server_t mutex while walking or modifying the
2401
2511
   cm_server_vols_t list in order to avoid a race condition.
2402
2512
 
2403
2513
 * Ensure that the cm_server_t refCount is safely modified.
2404
2514
 
2405
2515
 * The pthread library implementations of pthread_cond_wait
2406
 
   and pthread_cond_timedwait were failing to return with 
 
2516
   and pthread_cond_timedwait were failing to return with
2407
2517
   the mutex held when error conditions occurred.  This could
2408
2518
   result in race conditions wherever they are used.  One case
2409
2519
   in which problems were seen was the Rx event_handler().
2410
2520
 
2411
 
 * Prevent cm_GetBuffer() from locking all buffers associated with 
2412
 
   a stat cache object before deciding if the current buffer is up 
 
2521
 * Prevent cm_GetBuffer() from locking all buffers associated with
 
2522
   a stat cache object before deciding if the current buffer is up
2413
2523
   to date.
2414
2524
 
2415
 
 * Fix cm_BkgPrefetch to actually ensure that there is a cm_buf_t 
 
2525
 * Fix cm_BkgPrefetch to actually ensure that there is a cm_buf_t
2416
2526
   object for each offset that we will attempt to reserve.
2417
2527
 
2418
 
 * Reduce the default number of background daemon threads used to 
2419
 
   prefetch or store to one in order to prevent two or more threads 
 
2528
 * Reduce the default number of background daemon threads used to
 
2529
   prefetch or store to one in order to prevent two or more threads
2420
2530
   from stepping on each other.
2421
2531
 
2422
 
 * Reduce the default chunk size to 256KB in order to prevent read 
 
2532
 * Reduce the default chunk size to 256KB in order to prevent read
2423
2533
   timeouts on low bandwidth connections.
2424
2534
 
2425
 
 * Fix a race condition that could result in threads becoming stranded 
 
2535
 * Fix a race condition that could result in threads becoming stranded
2426
2536
   when synchronizing multiple requests on the same stat cache object.
2427
2537
 
2428
2538
Since 1.5.27
2429
2539
 * The GiveUpAllCallBacks functionality that was added in 1.5.21
2430
2540
   has been disabled.  It has been disabled because it turns out
2431
 
   that the RPC is improperly implemented in all file servers 
2432
 
   previous to 1.4.6.  The RPC is executed without the proper 
 
2541
   that the RPC is improperly implemented in all file servers
 
2542
   previous to 1.4.6.  The RPC is executed without the proper
2433
2543
   locks being held resulting in data corruption and eventual file
2434
 
   server failure.  The functionality will be re-enabled in a 
 
2544
   server failure.  The functionality will be re-enabled in a
2435
2545
   a few months.
2436
2546
 
2437
 
 * a couple of .readonly Volume Callback optimizations were 
 
2547
 * a couple of .readonly Volume Callback optimizations were
2438
2548
   implemented:
2439
 
   -  Apply most recent volume callback to all stat cache objects 
2440
 
      in the volume.  This avoids premature callback expirations 
 
2549
   -  Apply most recent volume callback to all stat cache objects
 
2550
      in the volume.  This avoids premature callback expirations
2441
2551
      and unnecessary FetchStatus calls.
2442
 
   - Add option to permit attempts to renew .readonly Volume 
2443
 
     Callbacks on a periodic basis to avoid invalidation of stat 
2444
 
     cache data.  [Requires daemonCheckVolCBInterval be set to 
 
2552
   - Add option to permit attempts to renew .readonly Volume
 
2553
     Callbacks on a periodic basis to avoid invalidation of stat
 
2554
     cache data.  [Requires daemonCheckVolCBInterval be set to
2445
2555
     non-zero number of seconds.  1800 (30 minutes) is suggested.]
2446
2556
 
2447
 
 * Adds support for 64-bit data version values.  Previous releases 
2448
 
   only supported 32-bit values.  Larger values sent by the file server 
 
2557
 * Adds support for 64-bit data version values.  Previous releases
 
2558
   only supported 32-bit values.  Larger values sent by the file server
2449
2559
   would result in rollover.
2450
2560
 
2451
 
 * aklog and asetkey no longer generate an exception if Kerberos for 
 
2561
 * aklog and asetkey no longer generate an exception if Kerberos for
2452
2562
   Windows is not installed.
2453
2563
 
2454
 
 * If the LSA authentication functions report a temporary out of memory 
2455
 
   condition, fail the current authentication and do not cause the AFS 
 
2564
 * If the LSA authentication functions report a temporary out of memory
 
2565
   condition, fail the current authentication and do not cause the AFS
2456
2566
   client service to terminate unexpectedly.
2457
2567
 
2458
 
 * When the AFS client service is shutting down, prevent the daemon check 
2459
 
   thread from executing additional checks which might attempt to access 
 
2568
 * When the AFS client service is shutting down, prevent the daemon check
 
2569
   thread from executing additional checks which might attempt to access
2460
2570
   discarded locks or unmapped memory.
2461
2571
 
2462
2572
 * Correct a double free condition in the NIM AFS credentials provider.
2463
2573
 
2464
 
 * Add "FollowBackupPath" service parameter registry value.   
 
2574
 * Add "FollowBackupPath" service parameter registry value.
2465
2575
   This provides equivalent functionality to the UNIX afsd -backuptree
2466
2576
   option.  When set to a non-zero value, normal mount points originating
2467
2577
   in a .backup volume will prefer a .backup volume.
2471
2581
 
2472
2582
 * Add Stack Frame logging for AMD64
2473
2583
 
2474
 
 * Add support for EWOULDBLOCK to cm_Analyze.  If the file 
2475
 
   server returns EWOULDBLOCK, retry the request every two 
 
2584
 * Add support for EWOULDBLOCK to cm_Analyze.  If the file
 
2585
   server returns EWOULDBLOCK, retry the request every two
2476
2586
   seconds for up to the RDRtimeout.
2477
2587
 
2478
 
 * Reorganize the order of the includes to ensure that EWOULDBLOCK 
 
2588
 * Reorganize the order of the includes to ensure that EWOULDBLOCK
2479
2589
   is not assigned the same value as EIO.
2480
2590
 
2481
2591
 * Update CellServDB to GCO Public 25 Oct 2007
2482
2592
 
2483
 
 * Add additional validation and error handling code after 
2484
 
   each call to getSlot().  If an invalid slot is returned, 
2485
 
   return NONODE.  If the invalid slot is returned when 
 
2593
 * Add additional validation and error handling code after
 
2594
   each call to getSlot().  If an invalid slot is returned,
 
2595
   return NONODE.  If the invalid slot is returned when
2486
2596
   extracting a data node, invalidate the tree.
2487
2597
 
2488
 
 * Modify compareKeys() to always perform a case-insensitive 
2489
 
   comparison and only perform a case sensistive comparison 
2490
 
   if the case-insensitive one matches.  This ensures the 
 
2598
 * Modify compareKeys() to always perform a case-insensitive
 
2599
   comparison and only perform a case sensistive comparison
 
2600
   if the case-insensitive one matches.  This ensures the
2491
2601
   ordering is consistently reported.
2492
2602
 
2493
 
 * Add lock assertions to ensure that all calls are being 
2494
 
   performed with the correct locks being held.  There have been 
2495
 
   some crash reports that provide stack data that does not appear 
2496
 
   to be possible unless there is a race.  However, there are no 
2497
 
   obvious locations where the race is taking place and the test 
2498
 
   suite indicates that all of the correct locks are being held. 
 
2603
 * Add lock assertions to ensure that all calls are being
 
2604
   performed with the correct locks being held.  There have been
 
2605
   some crash reports that provide stack data that does not appear
 
2606
   to be possible unless there is a race.  However, there are no
 
2607
   obvious locations where the race is taking place and the test
 
2608
   suite indicates that all of the correct locks are being held.
2499
2609
   We shall see what happens in the field.
2500
2610
 
2501
2611
 * For consistency replace all calls to findKey in which the range i
2502
2612
   s (1,numentries) with calls to getSlot().
2503
2613
 
2504
 
 * Optimize the depth search loop by testing the slot value in the 
 
2614
 * Optimize the depth search loop by testing the slot value in the
2505
2615
   for statement instead of forcing the loop to be broken later.
2506
2616
 
2507
2617
 * Reorganize the locking for cm_BeginDirOp and cm_EndDirOp.
2508
 
   There are a number of locations where locks are obtained, dropped, 
2509
 
   and reobtained.  This reorganization attempts to accomplish several 
 
2618
   There are a number of locations where locks are obtained, dropped,
 
2619
   and reobtained.  This reorganization attempts to accomplish several
2510
2620
   things:
2511
2621
 
2512
2622
   (1) be optimistic for the most common case so it will be fast
2513
2623
 
2514
 
   (2) add consistency checks after each location where locks are 
2515
 
       dropped and re-obtained.  If we lose a race in cm_BeginDirOp 
2516
 
       and the bplus tree is out of date, retry until we get to a 
 
2624
   (2) add consistency checks after each location where locks are
 
2625
       dropped and re-obtained.  If we lose a race in cm_BeginDirOp
 
2626
       and the bplus tree is out of date, retry until we get to a
2517
2627
       consistent state that we can use.
2518
2628
 
2519
2629
   (3) Ensure that all operations take place with the correct locks.
2520
2630
 
2521
 
 * One of the issues that has become a serious problem since the 
2522
 
   addition of the local directory updates is that although cm_SyncOp 
2523
 
   synchronizes operations, it does not preserve the order of requests. 
2524
 
   This has always been a problem in that it has been possible for a 
2525
 
   request to fail to complete due to its worker thread's bad luck. 
2526
 
   When a request takes longer than the Windows SMB Redirector's timeout, 
2527
 
   the SMB Redirector tears down the SMB virtual circuit. 
2528
 
 
2529
 
   When using the local directory updates it is really important that 
2530
 
   the directory update operations complete in the order that they were 
2531
 
   sent to the file server. If they don't, then the local directory state 
2532
 
   and the file server state will not match and the local directory state 
2533
 
   must be discarded which in turn forces a new read of the entire 
2534
 
   directory contents over the network. 
2535
 
 
2536
 
   This patch adds a new cm_scache_waiter_t object that is used to store 
2537
 
   the current thread, buffer, and syncop flags within a waiters queue 
2538
 
   on each cm_scache_t object. If a thread is forced to sleep in 
2539
 
   cm_SyncOp, upon waking it will check to see if there are any other 
2540
 
   threads waiting that are attempting to perform a similar task ahead 
2541
 
   of it in the queue. If yes, the thread goes back to sleep. If not, 
2542
 
   it goes ahead and enters the cm_SyncOp conflict resolution block. 
2543
 
 
2544
 
   This patch has the additional side effect of reducing the number of 
2545
 
   competing threads that must obtain the cm_scache_t mutex and process 
2546
 
   the cm_SyncOp conflict resolution block. As a result, the overall CPU 
2547
 
   utilization of the service and the clock time associated with processing 
 
2631
 * One of the issues that has become a serious problem since the
 
2632
   addition of the local directory updates is that although cm_SyncOp
 
2633
   synchronizes operations, it does not preserve the order of requests.
 
2634
   This has always been a problem in that it has been possible for a
 
2635
   request to fail to complete due to its worker thread's bad luck.
 
2636
   When a request takes longer than the Windows SMB Redirector's timeout,
 
2637
   the SMB Redirector tears down the SMB virtual circuit.
 
2638
 
 
2639
   When using the local directory updates it is really important that
 
2640
   the directory update operations complete in the order that they were
 
2641
   sent to the file server. If they don't, then the local directory state
 
2642
   and the file server state will not match and the local directory state
 
2643
   must be discarded which in turn forces a new read of the entire
 
2644
   directory contents over the network.
 
2645
 
 
2646
   This patch adds a new cm_scache_waiter_t object that is used to store
 
2647
   the current thread, buffer, and syncop flags within a waiters queue
 
2648
   on each cm_scache_t object. If a thread is forced to sleep in
 
2649
   cm_SyncOp, upon waking it will check to see if there are any other
 
2650
   threads waiting that are attempting to perform a similar task ahead
 
2651
   of it in the queue. If yes, the thread goes back to sleep. If not,
 
2652
   it goes ahead and enters the cm_SyncOp conflict resolution block.
 
2653
 
 
2654
   This patch has the additional side effect of reducing the number of
 
2655
   competing threads that must obtain the cm_scache_t mutex and process
 
2656
   the cm_SyncOp conflict resolution block. As a result, the overall CPU
 
2657
   utilization of the service and the clock time associated with processing
2548
2658
   requests will be reduced.
2549
2659
 
2550
2660
 * assert that the cm_scache_t mutex is held when calling
2561
2671
 * In insert and delete operations check for BTLOWER/BTUPPER and isleaf,
2562
2672
   if true convert to either slot 0 or Max and perform the insertion.
2563
2673
   This produces easier to read code when performing lookups.
2564
 
 
 
2674
 
2565
2675
 * modify lock_AssertXXX macros to call osi_assertx() and provide a
2566
2676
   descriptive message.
2567
2677
 
2576
2686
   This commit sets a default message for use when no other message is
2577
2687
   provided and it replaces all calls to osi_assert with osi_assertx and
2578
2688
   adds descriptions.
2579
 
   
 
2689
 
2580
2690
 * Migrate B+ tree search key into thread local storage
2581
2691
 
2582
2692
Since 1.5.25
2583
 
 * Fix an uninitialized variable in lana_IsLoopback() which 
2584
 
   could result in a random determination that a loopback 
2585
 
   adapter is not a loopback adapter.  This would result in 
 
2693
 * Fix an uninitialized variable in lana_IsLoopback() which
 
2694
   could result in a random determination that a loopback
 
2695
   adapter is not a loopback adapter.  This would result in
2586
2696
   a computed Netbios service name of %MACHINE%-AFS instead
2587
2697
   of AFS.  This is a serious problem if the value computed
2588
2698
   by the AFS Client Service and the client process pioctl
2589
 
   calls produce different results as it will result in a  
 
2699
   calls produce different results as it will result in a
2590
2700
   communication failure.
2591
2701
 
2592
2702
 * Fix a crash in the B+ Tree code that results when a file
2593
2703
   rename only results in a change of case.
2594
2704
 
2595
 
 * Fix the pioctl path parsing.  The previous algorithm 
 
2705
 * Fix the pioctl path parsing.  The previous algorithm
2596
2706
   broke the current directory of the client into two parts,
2597
2707
   the TIDpath which represented the device root and the
2598
2708
   relative path.  The problem is that this is not sufficient
2599
 
   from proper processing of symlinks and mount points.  
 
2709
   from proper processing of symlinks and mount points.
2600
2710
 
2601
2711
   What is required is that the last component of the path
2602
2712
   must not have the symlink or mount point be evaluated
2603
2713
   whereas symlink and mount point evaluation must be performed
2604
2714
   for the rest of the relative path.  Therefore, the path is
2605
2715
   now split into three parts: TIDpath, intermediate path,
2606
 
   and last component.  
 
2716
   and last component.
2607
2717
 
2608
2718
   "fs examine" now reports the data of the symlink or mount
2609
2719
   point object instead of the target and "symlink list" and
2626
2736
   HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
2627
2737
 
2628
2738
 * Add documented registry value, "AcceptDottedPrincipalNames"
2629
 
   which is used to permit the acquisition of AFS tokens 
 
2739
   which is used to permit the acquisition of AFS tokens
2630
2740
   using Kerberos v5 principal names which include a dot in
2631
2741
   the first component.
2632
2742
 
2639
2749
 * Update NSIS installer to version 2.30
2640
2750
 
2641
2751
 * Update Wix installer to version 2.0.5325
2642
 
 
 
2752
 
2643
2753
 * 64-bit KFW support:
2644
2754
   - Network Identity Manager plug-in
2645
2755
   - 64-bit aklog
2654
2764
   it isn't required.   Permit it to be used by organizations
2655
2765
   that clone Windows systems.
2656
2766
 
2657
 
 * On a suspend, only drop callbacks for servers that 
 
2767
 * On a suspend, only drop callbacks for servers that
2658
2768
   are online.  If the server is offline, maintain the callback
2659
2769
   until the server is once again available.
2660
2770
 
2661
2771
 * Prevent against acquisition of a directory write lock when
2662
 
   there are no updates to be performed.  This was resulting 
 
2772
   there are no updates to be performed.  This was resulting
2663
2773
   in a write-lock leak which later on would lead to a deadlock.
2664
2774
 
2665
2775
 * Add configurable file pre-fetch mode.  For files that match
2671
2781
 
2672
2782
 * Fix the client_osi large integer support so that return values
2673
2783
   can be properly assigned to large integer variables.
2674
 
 
2675
 
 * Do not hold cm_scache_t mutex across cm_GetCell() calls 
 
2784
 
 
2785
 * Do not hold cm_scache_t mutex across cm_GetCell() calls
2676
2786
   since cm_GetCell() can block in a RPC.
2677
2787
 
2678
2788
 * Add short file name support to B+ tree searches.
2689
2799
 
2690
2800
 * On Vista, force afs_config.exe to run with the highest privileges
2691
2801
   available to the end user.  For a user in the Administrators
2692
 
   group running under UAC, this will cause afs_config.exe to be 
2693
 
   be run with full Administrators privileges after the user 
 
2802
   group running under UAC, this will cause afs_config.exe to be
 
2803
   be run with full Administrators privileges after the user
2694
2804
   approves the privilege escalation.
2695
2805
 
2696
 
 * More VNOVNODE handling issues.  If a dirty buffer cannot be 
 
2806
 * More VNOVNODE handling issues.  If a dirty buffer cannot be
2697
2807
   written due to VNOVNODE, clear the buffer and ignore the error.
2698
2808
   If a cm_scache_t object has been marked deleted due to a VNOVNODE
2699
 
   error, the next time the smb_fid_t object that references it is 
 
2809
   error, the next time the smb_fid_t object that references it is
2700
2810
   used return either NOSUCHFILE or NOSUCHPATH and close the
2701
2811
   smb_fid_t object.  Subsequent attempts to use the smb_fid_t will
2702
2812
   result in an invalid handle error.
2713
2823
   many bytes equivalent to the '%' char.
2714
2824
 
2715
2825
 * Add directory lookup statistics to "fs memdump" output.
2716
 
 
 
2826
 
2717
2827
 
2718
2828
Since 1.5.23
2719
2829
 * Windows uses case-insensitive file name pattern matching
2720
2830
   but AFS is a case sensitive file system.  The AFS3 directory
2721
 
   format is block based, uses network byte order and 
2722
 
   includes a hash table for fast case sensitive lookups.  
 
2831
   format is block based, uses network byte order and
 
2832
   includes a hash table for fast case sensitive lookups.
2723
2833
   This causes several problems for the Windows AFS client.
2724
2834
   (1) Traversing the directory blocks is cpu expensive
2725
2835
   (2) A hash table miss does not indicate that the desired
2726
2836
       entry does not exist.
2727
2837
   (3) Determining whether a non-ambiguous inexact match or
2728
2838
       the entry does not exist requires a linear traversal
2729
 
       of the entire directory.  
 
2839
       of the entire directory.
2730
2840
   These issues often result in 100% CPU utilization.
2731
2841
 
2732
 
   These issues are addressed by building a modified B+ tree for 
 
2842
   These issues are addressed by building a modified B+ tree for
2733
2843
   each directory and then using the B+ tree for searches.
2734
2844
 
2735
2845
   This feature is disabled by default.  To enable it set
2739
2849
 * Correct a null pointer dereference in the symlink recursion
2740
2850
   detection code.  (Introduced in 1.5.22)
2741
2851
 
2742
 
 * Add the Network Identity Manager AFS Provider to AMD64 
 
2852
 * Add the Network Identity Manager AFS Provider to AMD64
2743
2853
   builds.
2744
2854
 
2745
2855
Since 1.5.22
2746
2856
 
2747
 
 * A new registry value, "BlockSize", can now be used to adjust 
2748
 
   the size of the internal buffers used to store file data.  
 
2857
 * A new registry value, "BlockSize", can now be used to adjust
 
2858
   the size of the internal buffers used to store file data.
2749
2859
   The default is 4KB.  When set, the values 1..1024 specify
2750
2860
   multiples of 4KB. Values > 1024 specify actual block sizes
2751
 
   and must be multiples of 4KB.  The actual block size in KB 
 
2861
   and must be multiples of 4KB.  The actual block size in KB
2752
2862
   can not be larger than the chunk size which defaults to 1MB.
2753
2863
 
2754
2864
    HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters
2756
2866
 
2757
2867
 * pts.exe and ptserver.exe built with -DSUPERGROUPS
2758
2868
 
2759
 
 * Service Manager shutdown hints have been added.  The hint 
 
2869
 * Service Manager shutdown hints have been added.  The hint
2760
2870
   specifies that it may take the AFS client service up to two
2761
 
   minutes to shutdown. 
 
2871
   minutes to shutdown.
2762
2872
 
2763
2873
 * Fix the recursion detection feature introduced in 1.5.22.
2764
2874
   The previous implementation broke the evaluation of paths
2769
2879
   in crash if the requested directory could not be created.
2770
2880
 
2771
2881
 * Fix a the VolumeStatusNotification log messages to save
2772
 
   the input string in the circular log buffer so garbarge 
 
2882
   the input string in the circular log buffer so garbarge
2773
2883
   won't be output to afsd.log when the log is dumped.
2774
 
   
 
2884
 
2775
2885
 
2776
2886
 * Increase the SMB Maximum Path length to 260 characters
2777
2887
   from 256 as that is what CIFS supports.
2778
2888
 
2779
 
 * On 64-bit Windows, use a unique description string for 
 
2889
 * On 64-bit Windows, use a unique description string for
2780
2890
   the 32-bit AFS Shell Extension.
2781
2891
 
2782
2892
Since 1.5.21
2783
2893
 
2784
 
 * In the AFS Admin Library, replaced all of the 
2785
 
   Ubik_Call(XXX_RPC,...) calls with Ubik_XXX_RPC(...).  This 
 
2894
 * In the AFS Admin Library, replaced all of the
 
2895
   Ubik_Call(XXX_RPC,...) calls with Ubik_XXX_RPC(...).  This
2786
2896
   allows parameter checking and proper type conversions to be
2787
2897
   performed.  This is crucial when passing parameters that are
2788
2898
   64-bit wide on systems in which 'long' is a 32-bit value.
2789
2899
   Otherwise, the parameter list on the stack is interpretted
2790
2900
   incorrectly and the function not only doesn't succeed but it
2791
2901
   might corrupt memory and if lucky crash the application.
2792
 
  
2793
 
   The only program that we care about that uses this library 
 
2902
 
 
2903
   The only program that we care about that uses this library
2794
2904
   is the AFS Server Manager.  Now it doesn't crash.
2795
2905
 
2796
 
 * Fixed smb directory searches for non-wildcard names.  The 
 
2906
 * Fixed smb directory searches for non-wildcard names.  The
2797
2907
   optimized function should not have set the bulk in progress
2798
2908
   flag.  This would adversely affect later directory searches
2799
2909
   that required a bulk search.
2805
2915
 * Executables executed out of AFS name space can have their
2806
2916
   pages swapped out by Windows.  Those pages will be reloaded
2807
2917
   when they are required.  However, if the cache manager no
2808
 
   longer has a callback and all of the file servers with 
 
2918
   longer has a callback and all of the file servers with
2809
2919
   the volume data are down, then the application will crash
2810
 
   due to the inability to read the required page.  
 
2920
   due to the inability to read the required page.
2811
2921
 
2812
2922
   We now track the down time of each server.  If the callback
2813
2923
   expires after the server that issued it went down and all
2814
2924
   servers are down, we delay the expiration to permit the data
2815
 
   in the cache to be continue to be used by Windows or an 
 
2925
   in the cache to be continue to be used by Windows or an
2816
2926
   application.
2817
2927
 
2818
2928
 * The Windows AFS client has always had very poor performance
2819
 
   with regards to directory management.   In the case of 
 
2929
   with regards to directory management.   In the case of
2820
2930
   directory updates caused by create, rename,and delete operations,
2821
2931
   the AFS cache manager will now perform local directory updates
2822
2932
   when possible in order to avoid re-reading the directory from
2823
 
   the file server.  This will be done in whenever both of the 
 
2933
   the file server.  This will be done in whenever both of the
2824
2934
   following conditions are true:
2825
2935
 
2826
 
   - the data version on the directory increased by one as a 
 
2936
   - the data version on the directory increased by one as a
2827
2937
     result of the operation
2828
2938
 
2829
2939
   - all of the directory buffers necessary to make the change
2830
2940
     are present in the cache
2831
2941
 
2832
 
 * The error message in the AFS Control Panel describing the 
 
2942
 * The error message in the AFS Control Panel describing the
2833
2943
   need to be a Windows Administrator has been replaced with
2834
2944
   a message describing the need to be in the AFS Admins Group.
2835
2945
 
2836
2946
 * If the vldb server list is empty when attempting to evaluate
2837
2947
   a cell mountpoint it was possible for a crash to occur.  This
2838
2948
   can only happen if there is an existing mount point and the
2839
 
   is a failure attempting to load the server list from the 
 
2949
   is a failure attempting to load the server list from the
2840
2950
   CellServDB file or via AFSDB queries.
2841
2951
 
2842
2952
 * dirty buffers only have their dirty bytes stored to the file
2843
2953
   server instead of the entire chunksize
2844
2954
 
2845
2955
 * the default chunksize has been increased from 128KB to 1MB
2846
 
   
 
2956
 
2847
2957
 
2848
2958
Since 1.5.20
2849
2959
 
2850
 
 * changed the enum values for cm_serverRef_t state info to use a 
 
2960
 * changed the enum values for cm_serverRef_t state info to use a
2851
2961
   private name space to avoid collisions (srv_)
2852
 
 
2853
 
 * added a srv_deleted state for cm_serverRef_t objects.  This 
2854
 
   state is set when cm_FreeServerList() is called with the 
 
2962
 
 
2963
 * added a srv_deleted state for cm_serverRef_t objects.  This
 
2964
   state is set when cm_FreeServerList() is called with the
2855
2965
   CM_FREESERVERLIST_DELETE flag set.  cm_FreeServerList() may
2856
2966
   not always delete the cm_serverRef_t from the list if it is
2857
2967
   still in use by another thread.  the srv_deleted state means
2858
 
   the object's contents are no longer valid and it must be 
2859
 
   skipped.  It will be deleted the next time the object is 
 
2968
   the object's contents are no longer valid and it must be
 
2969
   skipped.  It will be deleted the next time the object is
2860
2970
   freed and the refcount hits zero.
2861
 
 
 
2971
 
2862
2972
 * the srv_deleted state is also used when a file server reports
2863
2973
   either VNOVOL or VMOVED instead of marking the cm_serverRef_t
2864
 
   as offline.  This is done to prevent additional usage of the 
 
2974
   as offline.  This is done to prevent additional usage of the
2865
2975
   stale vldb data while waiting for the update volume request
2866
2976
   to complete.
2867
 
 
2868
 
 * added a state field to the cm_volume_t object (enum volstate 
 
2977
 
 
2978
 * added a state field to the cm_volume_t object (enum volstate
2869
2979
   vl_ name space) that maintains the state of the volume based
2870
2980
   upon the states of all of the cm_serverRef_t and cm_server_t
2871
2981
   objects.
2872
 
 
 
2982
 
2873
2983
 * modified cm_UpdateVolume() to set the state of the cm_volume_t
2874
2984
   RW, RO, and BK to either vl_alldown or vl_online.  There can't
2875
 
   be any other states because cm_UpdateVolume() destroys any  
 
2985
   be any other states because cm_UpdateVolume() destroys any
2876
2986
   previous knowledge we might have had regarding busy or offline
2877
2987
   volume status
2878
 
 
2879
 
 * modified cm_UpdateVolume() to update the volume name in the 
2880
 
   cm_volume_t to the volume base name if the previous value was 
 
2988
 
 
2989
 * modified cm_UpdateVolume() to update the volume name in the
 
2990
   cm_volume_t to the volume base name if the previous value was
2881
2991
   a volume ID.
2882
 
 
 
2992
 
2883
2993
 * modified cm_FollowMountPoint() to check to see if the volume
2884
 
   name is a volume ID and if so call cm_GetVolumeByID instead 
 
2994
   name is a volume ID and if so call cm_GetVolumeByID instead
2885
2995
   of cm_GetVolumeByName.  This ensures that volume IDs are always
2886
 
   looked up as numeric values.  There is no longer a need to 
 
2996
   looked up as numeric values.  There is no longer a need to
2887
2997
   maintain a separate cm_volume_t containing the string representation
2888
2998
   of the ID value.
2889
 
 
 
2999
 
2890
3000
 * Added a flags parameter to cm_GetVolumeByName() and cm_GetVolumeByID().
2891
3001
   The first flag is a "CREATE" flag which is set by all existing
2892
3002
   calls.  The flag is not set by calls to cm_GetVolumeByID() from
2893
 
   the server probe code when volume status is being updated.  We 
2894
 
   do not want the server probe operation to result in additional 
2895
 
   turnover in the cached volume data.  The second flag is NO_LRU_UPDATE 
 
3003
   the server probe code when volume status is being updated.  We
 
3004
   do not want the server probe operation to result in additional
 
3005
   turnover in the cached volume data.  The second flag is NO_LRU_UPDATE
2896
3006
   which is set when the server probe code updates the volume status.
2897
3007
   This flag will be used to prevent the server probe operation from
2898
3008
   changing the order of the least recently used queue.
2899
 
 
2900
 
 * Modified cm_GetVolumeByName to ensure that only one cm_volume_t is 
 
3009
 
 
3010
 * Modified cm_GetVolumeByName to ensure that only one cm_volume_t is
2901
3011
   allocated for a given set of normal, readonly, and backup volumes
2902
 
   regardless of whether or not the volume is accessed via name or 
 
3012
   regardless of whether or not the volume is accessed via name or
2903
3013
   ID number.  The cm_volume_t namep field is always the base name
2904
 
   of the volume. 
2905
 
 
 
3014
   of the volume.
 
3015
 
2906
3016
 * Added a new volume state, vl_unknown.  This state is used as
2907
 
   the initial state for all cm_volume_t when the cache manager starts, 
 
3017
   the initial state for all cm_volume_t when the cache manager starts,
2908
3018
   for each cm_volume_t at creation, and for each cm_volume_t when
2909
 
   recycling.  The cache manager does not know the state of all 
 
3019
   recycling.  The cache manager does not know the state of all
2910
3020
   volumes in the world, only those that are in the cache and for
2911
3021
   which it has queried the VLDB and hosting file servers.
2912
 
 
2913
 
 * modified cm_GetVolumeByName() to initialize the state of a 
2914
 
   volume to vl_unknown.  The actual state will be set when a 
 
3022
 
 
3023
 * modified cm_GetVolumeByName() to initialize the state of a
 
3024
   volume to vl_unknown.  The actual state will be set when a
2915
3025
   cm_VolumeUpdate() call completes successfully.
2916
 
 
 
3026
 
2917
3027
 * changed name of scache hash table variables to avoid ambiguity
2918
3028
   when adding hash tables for volumes
2919
 
 
 
3029
 
2920
3030
 * fix a buffer overrun in sys\pioctl_nt.c  pioctl().
2921
 
 
 
3031
 
2922
3032
 * modified cm_UpdateVolume() to handle the case in which there is
2923
 
   no RW volume but there is are RO volumes for a given base name. 
2924
 
   This is done by querying for the ".readonly" volume name if the 
 
3033
   no RW volume but there is are RO volumes for a given base name.
 
3034
   This is done by querying for the ".readonly" volume name if the
2925
3035
   base name does not exist in the VLDB.  We never query for the
2926
 
   .backup name because under the current usage model a .backup 
 
3036
   .backup name because under the current usage model a .backup
2927
3037
   volume may only exist on the server that the read-write volume
2928
3038
   is located.  If there is no RW volume, there can be no .backup.
2929
 
 
2930
 
 * Added four hash tables for cm_volume_t objects to improve the 
 
3039
 
 
3040
 * Added four hash tables for cm_volume_t objects to improve the
2931
3041
   search time of cm_GetVolumeByID(), cm_GetVolumeByName() and
2932
 
   cm_ForceUpdateVolume(). One each for Name, RWID, ROID, and 
 
3042
   cm_ForceUpdateVolume(). One each for Name, RWID, ROID, and
2933
3043
   BKID.  Three ID hash tables are necessary as long as it is
2934
3044
   desireable to maintain a single cm_volume_t containing all
2935
3045
   of the related RW, RO, and BK volume data.  Having the RW and
2936
 
   RO volume data in the same object is necessary for the 
 
3046
   RO volume data in the same object is necessary for the
2937
3047
   implementation of cm_GetROVolumeID() which returns either the
2938
 
   RO or RW ID depending upon the existence of RO volume instances.  
2939
 
 
 
3048
   RO or RW ID depending upon the existence of RO volume instances.
 
3049
 
2940
3050
 * Added a volume LRU queue so that volume reuse becomes fairer.
2941
3051
   This does not replace the all Volumes list which is used when
2942
3052
   it is desireable to walk a list of all the volumes whose order
2943
3053
   is not going to change out from underneath you which makes it
2944
3054
   safe to drop the cm_volumeLock.
2945
 
 
2946
 
 * handles volume hash table updates where volume name to 
2947
 
   volume ID number changes.  The volume name remains 
2948
 
   constant in the cm_volume_t.  if a vos rename is performed, 
2949
 
   the name of the volume will change and the volume IDs will be 
2950
 
   updated.  Subsequent access to the old volume ID will create a 
 
3055
 
 
3056
 * handles volume hash table updates where volume name to
 
3057
   volume ID number changes.  The volume name remains
 
3058
   constant in the cm_volume_t.  if a vos rename is performed,
 
3059
   the name of the volume will change and the volume IDs will be
 
3060
   updated.  Subsequent access to the old volume ID will create a
2951
3061
   new cm_volume_t with the new name.
2952
 
 
 
3062
 
2953
3063
 * Added a daemon thread operation to query the state of volumes
2954
 
   listed as busy or offline.  cm_CheckBusyVolumes() calls 
2955
 
   RXAFS_GetVolumeStatus() for each volume ID that is marked vl_busy 
 
3064
   listed as busy or offline.  cm_CheckBusyVolumes() calls
 
3065
   RXAFS_GetVolumeStatus() for each volume ID that is marked vl_busy
2956
3066
   or vl_offline.   If the volume is now online, the status on the
2957
 
   volume is updated.  The default period is 600 seconds.  This can 
2958
 
   be configured with the BusyVolumeCheckInterval registry value.  
2959
 
 
 
3067
   volume is updated.  The default period is 600 seconds.  This can
 
3068
   be configured with the BusyVolumeCheckInterval registry value.
 
3069
 
2960
3070
 * Added prototype for smb_IoctlPrepareRead() which was missing a
2961
3071
   return type in the function definition.
2962
 
 
 
3072
 
2963
3073
 * Added volume id lists to the cm_server_t.  These lists are
2964
 
   allocated in blocks of ~32 IDs.  When a cm_PingServer() 
 
3074
   allocated in blocks of ~32 IDs.  When a cm_PingServer()
2965
3075
   detects a change in server state, the state of the cm_volume_t
2966
 
   is updated.  
2967
 
 
 
3076
   is updated.
 
3077
 
2968
3078
 * Added volID to the cm_serverRef_t object.  volID is used
2969
3079
   to identify the volume for which the object is a referral.
2970
 
   cm_FreeServerList() uses the volID to remove the volume 
 
3080
   cm_FreeServerList() uses the volID to remove the volume
2971
3081
   from the cm_server_t.
2972
 
 
2973
 
 * In cm_Analyze, when VNOVOL or VMOVED are received, 
2974
 
   call cm_ForceVolumeUpdate() to force a refresh of the volume 
 
3082
 
 
3083
 * In cm_Analyze, when VNOVOL or VMOVED are received,
 
3084
   call cm_ForceVolumeUpdate() to force a refresh of the volume
2975
3085
   location data.
2976
 
 
 
3086
 
2977
3087
 * Added cm_VolumeStatusNotification() which is used at the moment
2978
3088
   to log volume status changes to the trace log.  It will also
2979
3089
   be used as the access point to the File System Filter driver
2980
3090
   notification engine.
2981
 
 
 
3091
 
2982
3092
 * Added an all cm_scache_t list to cm_data.  This replaces the use
2983
 
   of the stat cache LRU queue when we need to enumerate all 
2984
 
   entries.  The LRU list order is not static and when using it to 
 
3093
   of the stat cache LRU queue when we need to enumerate all
 
3094
   entries.  The LRU list order is not static and when using it to
2985
3095
   enumerate all entries it can result in items being missed or
2986
3096
   items being processed more than once.
2987
 
 
 
3097
 
2988
3098
 * Modified cm_Analyze(). Instead of reseting the busy or offline
2989
3099
   state of a volume and forcing a retry of the operation
2990
3100
   cm_Analyze will defer to the background daemon thread that will
2991
3101
   update the state once every 600 seconds.
2992
 
 
 
3102
 
2993
3103
 * Added the automatic generation of a Freelance ".root" read-write
2994
3104
   mountpoint that refers to the root.afs volume of the workstation
2995
3105
   cellname at the time the mountpoint is created.
2996
 
 
 
3106
 
2997
3107
 * re-write cm_Analyze to make better use of the known volume
2998
3108
   status.  VL_Server queries cannot result in CM_ERROR_ALLOFFLINE
2999
3109
   messages.
3000
 
 
3001
 
 * renamed cm_CheckBusyVolumes to cm_CheckOfflineVolumes.  
 
3110
 
 
3111
 * renamed cm_CheckBusyVolumes to cm_CheckOfflineVolumes.
3002
3112
   busy volumes will be reset to srv_non_busy by the function
3003
3113
   but there is no mechanism for querying the busy state other
3004
3114
   than by attempting to access the resource.
3005
 
 
 
3115
 
3006
3116
 * cm_Analyze will query the state of an offline volume before
3007
3117
   deciding whether or not to retry when all volume instances
3008
3118
   are offline.
3009
 
 
 
3119
 
3010
3120
 * the algorithm used after an IP address list change detection
3011
3121
   has been modified.  we now check the state of the VLDB servers,
3012
 
   then reset the rx connections, and finally check the state of 
3013
 
   the file servers.  Previously we flushed the rx connections 
3014
 
   and then checked the servers in whatever random order they 
 
3122
   then reset the rx connections, and finally check the state of
 
3123
   the file servers.  Previously we flushed the rx connections
 
3124
   and then checked the servers in whatever random order they
3015
3125
   were first discovered.
3016
 
 
 
3126
 
3017
3127
 * fix the volume status reported by "fs examine"
3018
 
 
 
3128
 
3019
3129
 * various improvements to the AFS Network Identity Manager Provider.
3020
3130
   - Don't access freed objects after the window has been destroyed.
3021
 
   - Write back the AFS cell list in the identity configuration 
 
3131
   - Write back the AFS cell list in the identity configuration
3022
3132
     even when its empty.
3023
 
   - Disable all use of the provider when AFS is disabled for a 
 
3133
   - Disable all use of the provider when AFS is disabled for a
3024
3134
     particular identity.
3025
 
 
 
3135
 
3026
3136
 * Fix cm_cell_t leak.  When evaluating a mountpoint that uses an
3027
3137
   alias instead of the full cellname, double check the full cell
3028
3138
   name and see if we have a matching cell before allocating a new
3029
3139
   one.
3030
 
 
 
3140
 
3031
3141
 * Dump more data with "fs memdump". All volumes and scaches and
3032
3142
   now cells.
3033
 
 
 
3143
 
3034
3144
 * Reverse the order of the all cells list.  This ensures that
3035
3145
   the workstation cell is always first in the list.
3036
 
 
 
3146
 
3037
3147
 * If we recognize the server from which a callback revoke was
3038
3148
   received, then we can ensure that we only invalidate the status
3039
3149
   information for cm_scache_t objects belonging to that cell.
3040
 
 
 
3150
 
3041
3151
 * When building for amd64, use APPVER 5.02 as we do not support
3042
3152
   64-bit Windows 2000 and explicitly state the machine type in
3043
 
   the link flags.  
3044
 
 
3045
 
 * no longer treat VMWare network adapters as equivalent to a 
 
3153
   the link flags.
 
3154
 
 
3155
 * no longer treat VMWare network adapters as equivalent to a
3046
3156
   loopback adapter.  For some unknown reason, publishing the "AFS"
3047
 
   netbios name on them frequently results in a name collision 
 
3157
   netbios name on them frequently results in a name collision
3048
3158
   error.
3049
 
 
 
3159
 
3050
3160
 * Use read locks whenever possible instead of write locks when
3051
3161
   walking the allCellsp list.  This permits better use of multiple
3052
3162
   CPUs.
3053
 
 
 
3163
 
3054
3164
 * In 1.5.20 a bug was introduced by the fake status when PRSFS_READ
3055
3165
   is not present on the directory optimization.   It would report
3056
3166
   mount points and directory objects for which there was no
3057
 
   status information as a zero length file.  Instead we can use 
 
3167
   status information as a zero length file.  Instead we can use
3058
3168
   the vnode number of the object to determine if it should be
3059
3169
   considered to be a directory or a file.  If it is odd it is a
3060
3170
   directory; even it is a file.
3061
 
 
 
3171
 
3062
3172
 * Give Back Callbacks to the file servers in response to suspend
3063
3173
   and shutdown power management events.  Only give up callbacks
3064
3174
   to UP servers and do so with a very short RX dead timeout.
3065
3175
   (10 seconds)
3066
 
 
3067
 
 * Fix a race condition in the SMB FID cleanup code that could 
 
3176
 
 
3177
 * Fix a race condition in the SMB FID cleanup code that could
3068
3178
   result in a stat cache mutex never being released.
3069
 
 
3070
 
 * Fix the graphics files that are installed as part of the 
 
3179
 
 
3180
 * Fix the graphics files that are installed as part of the
3071
3181
   IBM Administrators Guide.
3072
 
 
3073
 
 * Change the behavior of pioctl path parsing to not follow 
 
3182
 
 
3183
 * Change the behavior of pioctl path parsing to not follow
3074
3184
   symlinks or mount points during evaluation.  This results in
3075
3185
   the FID being the symlink or mount point and not the object
3076
 
   they point to.  This is consistent with the behavior of the 
 
3186
   they point to.  This is consistent with the behavior of the
3077
3187
   UNIX client.
3078
3188
 
3079
3189
 * Enable AFSDB record lookup for command line tools such as
3086
3196
 
3087
3197
 * Ensure that all writes to the afsd_alloc.log file use CR-LF.
3088
3198
 
3089
 
 * Prevent the afsprocmgmt.dll from being unloaded while the 
 
3199
 * Prevent the afsprocmgmt.dll from being unloaded while the
3090
3200
   background thread it starts is running.
3091
3201
 
3092
3202
 * Avoid a race condition when closing smb_fid_t objects.
3102
3212
   Install it under its own HKCR keys.
3103
3213
 
3104
3214
 * modify the wix installer to remove and upgrade install packages
3105
 
   with the same version number.  
 
3215
   with the same version number.
3106
3216
 
3107
 
 * when flushing volume location data every two hours or in 
3108
 
   response to "fs checkvolumes", also flush the mount point 
 
3217
 * when flushing volume location data every two hours or in
 
3218
   response to "fs checkvolumes", also flush the mount point
3109
3219
   links in order to force their re-evaluation.
3110
3220
 
3111
 
 * aklog was copying an uninitialized buffer as part of the 
 
3221
 * aklog was copying an uninitialized buffer as part of the
3112
3222
   foreign cell automatic pts registration
3113
3223
 
3114
3224
 * when obtaining directory listings, check for read permission
3119
3229
 
3120
3230
 * "fs getcacheparms" output was incorrect.
3121
3231
 
3122
 
 * NetIdMgr AFS Provider should only automatically add token 
 
3232
 * NetIdMgr AFS Provider should only automatically add token
3123
3233
   acquisition for cell foo.com if the realm of the cell matches
3124
3234
   the realm of the identity.
3125
3235
 
3129
3239
 
3130
3240
 * network identity manager provider:
3131
3241
 
3132
 
   - Correct for the fact that pr_CreateUser tampers with the 
 
3242
   - Correct for the fact that pr_CreateUser tampers with the
3133
3243
     contents of the username input buffer.
3134
3244
 
3135
3245
   - Take into account that the krb4 credential data structure
3136
3246
     does not have separate realm fields for the user and service.
3137
3247
     When krb524 is used with a cross-realm ticket, the realm
3138
 
     describes the service not the user.  
 
3248
     describes the service not the user.
3139
3249
 
3140
3250
 * Many integrated logon changes:
3141
3251
 
3142
 
   - Fix eventlog reporting.  Do not attempt to log an event 
3143
 
     if the event source registration fails.  Use DebugEvent0 
 
3252
   - Fix eventlog reporting.  Do not attempt to log an event
 
3253
     if the event source registration fails.  Use DebugEvent0
3144
3254
     instead of DebugEvent when there are no parameters.
3145
3255
 
3146
 
   - Modify the LOOKUPKEYCHAIN macro to recognize ERROR_MORE_DATA 
 
3256
   - Modify the LOOKUPKEYCHAIN macro to recognize ERROR_MORE_DATA
3147
3257
     errors.
3148
3258
 
3149
 
   - Fix the reading of Domain specific configuration for 
3150
 
     LogonScript and TheseCells.  Previously the dwSize value was 
3151
 
     being overwritten so that subsequent RegQueryValueEx call 
 
3259
   - Fix the reading of Domain specific configuration for
 
3260
     LogonScript and TheseCells.  Previously the dwSize value was
 
3261
     being overwritten so that subsequent RegQueryValueEx call
3152
3262
     would fail.
3153
3263
 
3154
3264
   - Fix a memory leak in the TheseCells reading code.
3155
3265
 
3156
 
   - Add support for Domain specific "Realm" specification.  The 
3157
 
     realm is the realm to be appended to the username.  When 
3158
 
     logging in as a domain or to the local machine, the specified 
 
3266
   - Add support for Domain specific "Realm" specification.  The
 
3267
     realm is the realm to be appended to the username.  When
 
3268
     logging in as a domain or to the local machine, the specified
3159
3269
     "Domain" name is not going to be a valid realm name.
3160
3270
 
3161
 
   - Construct a proper principal name based upon the domain 
 
3271
   - Construct a proper principal name based upon the domain
3162
3272
     specified realm for use in obtaining tokens with KFW.
3163
3273
 
3164
 
   - If the domain specified "TheseCells" list includes the 
 
3274
   - If the domain specified "TheseCells" list includes the
3165
3275
     default cell, do not obtain tokens twice.
3166
3276
 
3167
 
 * An unprotected call to the Kerberos v5 function, 
 
3277
 * An unprotected call to the Kerberos v5 function,
3168
3278
   krb5_free_context(), can result in an invalid memory access
3169
3279
   exception if the contents of the krb5 profile, krb5.ini, cannot
3170
3280
   be parsed correctly.  The error is located within the afskfw
3171
 
   library which is used by afscreds.exe, afssvrmgr.exe, and 
 
3281
   library which is used by afscreds.exe, afssvrmgr.exe, and
3172
3282
   afslogon.dll.  When the error is triggered within afslogon.dll
3173
3283
   a blue screen condition can occur when the winlogon.exe system
3174
3284
   process terminates unexpectedly.
3179
3289
   if the cell name cannot be determined when responding
3180
3290
   to a "fs whereis" command.
3181
3291
 
3182
 
 * Integrated Logon (afslogon.dll).  No longer attempt 
 
3292
 * Integrated Logon (afslogon.dll).  No longer attempt
3183
3293
   to preserve Kerberos 5 tickets for the logon session
3184
3294
   as that job is now supported by KFW 3.1 and above.
3185
3295
 
3191
3301
 * CellServDB update - GCO Public CellServDB 09 Mar 2007
3192
3302
 
3193
3303
 * AFS Server Manager and AFS Account Manager data cache
3194
 
   moved from HKCU\Software\TransarcCorporation to 
 
3304
   moved from HKCU\Software\TransarcCorporation to
3195
3305
   HKCU\Software\OpenAFS to prevent crashes due to data
3196
3306
   format changes.
3197
3307
 
3206
3316
 
3207
3317
 * Before marking a server as down in cm_Analyze, retry the
3208
3318
   request using a new rx connection to the server.  If the
3209
 
   cache manager is behind a NAT, it is possible that the 
3210
 
   response from the server is being sent to the original   
 
3319
   cache manager is behind a NAT, it is possible that the
 
3320
   response from the server is being sent to the original
3211
3321
   address:port from which the rx connection was established.
3212
3322
   This will appear to the cache manager as the server being
3213
 
   down when in fact it is not.  Forcing the use of a new rx  
3214
 
   connection will result in the server responding to the    
 
3323
   down when in fact it is not.  Forcing the use of a new rx
 
3324
   connection will result in the server responding to the
3215
3325
   most recent address:port assigned to the client by the NAT.
3216
3326
 
3217
3327
   If the server is in fact down, it will simply take a little
3218
 
   longer to notice it.   
 
3328
   longer to notice it.
3219
3329
 
3220
3330
Since 1.5.15
3221
3331
 
3222
3332
 * Removing a directory that contained entries was failing with
3223
3333
   the wrong error code being returned to the CIFS client.
3224
3334
 
3225
 
 * rxdebug -long 
 
3335
 * rxdebug -long
3226
3336
 
3227
3337
 * rxdebug exponential back-off.  don't take down a server that
3228
3338
   is already struggling to respond.
3231
3341
   menu if it is supported by NIM.  (KFW 3.2 and above)
3232
3342
 
3233
3343
 * Plug-n-play networking did not always work after coming back
3234
 
   from a Windows Suspend.  The AFS client service failed to 
 
3344
   from a Windows Suspend.  The AFS client service failed to
3235
3345
   re-compute the LAN adapter to bind to and instead attempted
3236
3346
   to bind to all LAN adapters.  This would polute the public
3237
 
   network with the name "AFS" which could lead to conflicts 
 
3347
   network with the name "AFS" which could lead to conflicts
3238
3348
   between machines.
3239
3349
 
3240
3350
 * Build installers using Microsoft Hotfixes provided at
3241
3351
   http://tinyurl.com/243svk for Visual Studio C RunTime Library
3242
 
   Daylight Savings Time issues.  
 
3352
   Daylight Savings Time issues.
3243
3353
 
3244
 
 * "fs checkserver" does not require admin privileges unless 
 
3354
 * "fs checkserver" does not require admin privileges unless
3245
3355
   the probe interval is being changed.
3246
3356
 
3247
3357
Since 1.5.14
3248
3358
 
3249
 
 * A reference leak was discovered in the mountpoint traversal 
 
3359
 * A reference leak was discovered in the mountpoint traversal
3250
3360
   functionality which resulted in cm_volume_t objects not becoming
3251
3361
   eligible for re-use.  This will trigger a panic condition when
3252
3362
   more than the maximum number of volumes is accessed.
3253
3363
 
3254
3364
 * Fixed the success test for the "fs memdump" operation.  Success
3255
 
   is now reported as such.  Added cm_volume_t object information 
 
3365
   is now reported as such.  Added cm_volume_t object information
3256
3366
   to the dump file.
3257
3367
 
3258
3368
 * A data corruption error has been fixed.  Write requests
3259
3369
   queued for background processing were not retried upon failure.
3260
3370
   This leads to inconsistencies between the contents of the file
3261
 
   in the local cache and the contents of the file on the file 
3262
 
   server.  
 
3371
   in the local cache and the contents of the file on the file
 
3372
   server.
3263
3373
 
3264
3374
   The implemented fix is to re-queue any request that has failed
3265
3375
   due to timeout, volume busy, volume offline, server busy, or
3283
3393
   known to cause this behavior.
3284
3394
 
3285
3395
 * When deleting files, the SMB Server would attempt to obtain
3286
 
   the access permissions for the parent directory instead of 
3287
 
   for the file itself.  This would result in an incorrect 
 
3396
   the access permissions for the parent directory instead of
 
3397
   for the file itself.  This would result in an incorrect
3288
3398
   assessment of whether or not the file can be deleted.
3289
3399
 
3290
3400
 * The Network Identity Manager AFS plug-in has had its string
3300
3410
   exception was raised.
3301
3411
 
3302
3412
 * Fix another volume refcount leak.  This one was triggered by
3303
 
   an inability to contact the vlservers in order to update the 
 
3413
   an inability to contact the vlservers in order to update the
3304
3414
   file server list.
3305
3415
 
3306
 
 * Fix checklist control used by the drive mappings tabs in 
 
3416
 * Fix checklist control used by the drive mappings tabs in
3307
3417
   afscreds.exe and afs_control.exe.
3308
3418
 
3309
3419
 * Improve output of "fs memdump" related to buffer management.
3312
3422
   already in the process of being fetched.
3313
3423
 
3314
3424
 * Improve cache performance by computing the buffer hash table
3315
 
   size based upon the number of buffers so that the average 
 
3425
   size based upon the number of buffers so that the average
3316
3426
   number of entries in a bucket is seven.
3317
3427
 
3318
 
 * Improve cache performance of read/write data by locally 
 
3428
 * Improve cache performance of read/write data by locally
3319
3429
   updating the dataVersion of all buffers associated with the
3320
3430
   file on each StoreData or StoreStatus operation provided that
3321
3431
   the dataVersion was incremented by one and the dataVersion of
3322
 
   the buffer matched the original dataVersion of the cached 
 
3432
   the buffer matched the original dataVersion of the cached
3323
3433
   status information for the file.
3324
3434
 
3325
 
 * When recycling cm_scache_t objects, make sure that we 
 
3435
 * When recycling cm_scache_t objects, make sure that we
3326
3436
   clear all of the previous fields.  It is no longer the
3327
3437
   case that we can assume that the stat cache object is being
3328
 
   obtained only after a successful FetchStatus call.  
 
3438
   obtained only after a successful FetchStatus call.
3329
3439
   InlineBulkStatus will allocate stat cache objects for which
3330
3440
   the no status information is available.
3331
3441
 
3332
3442
 * When a file is being opened with the OPEN_ALWAYS disposition,
3333
3443
   do not require write permissions when the file already exists
3334
 
   unless of course the file is being opened requesting write 
 
3444
   unless of course the file is being opened requesting write
3335
3445
   access.
3336
3446
 
3337
 
 * When a file has been opened for read-only access, if the 
 
3447
 * When a file has been opened for read-only access, if the
3338
3448
   application requests an exclusive lock, obtain a read-lock
3339
3449
   instead of a write-lock.  The purpose of the exclusive lock
3340
3450
   in this situation is to prevent changes to the file and the
3347
3457
   files.
3348
3458
 
3349
3459
 * The CIFS READ and LIST permissions use the same value 0x0001.
3350
 
   When a directory is being accessed, check for PRSFS_LOOKUP 
 
3460
   When a directory is being accessed, check for PRSFS_LOOKUP
3351
3461
   instead of PRSFS_READ.
3352
3462
 
3353
3463
Since 1.5.12
3360
3470
   lock is not being held in order to permit those threads that
3361
3471
   can free buffers to do so.
3362
3472
 
3363
 
 * Power Management improvements.  Maintain a global flag that 
 
3473
 * Power Management improvements.  Maintain a global flag that
3364
3474
   specifies whether or not the service is in a suspend state.
3365
3475
   Do not panic if Netbios() returns NRC_BRIDGE meaning that the
3366
3476
   lana is no longer valid.  Instead, stop the listener threads
3372
3482
 
3373
3483
 * CreateX and NTCreateX use cm_CheckNTOpen() to test whether or not
3374
3484
   the user is permitted to obtain read or write locks.  This function
3375
 
   would obtain the lock and then drop it returning whether or not 
 
3485
   would obtain the lock and then drop it returning whether or not
3376
3486
   the lock could be obtained.  If the lock was in fact required,
3377
3487
   CreateX/NTCreateX would then obtain it with cm_Lock().  The problem
3378
 
   of course being that this pattern results in three RPCs to the 
 
3488
   of course being that this pattern results in three RPCs to the
3379
3489
   file server (lock, unlock, lock).  This is reduced to one RPC by
3380
3490
   implementing cm_CheckNTOpenDone() which frees the allocated byte
3381
 
   range lock from cm_CheckNTOpen() after the cm_Lock() call is 
 
3491
   range lock from cm_CheckNTOpen() after the cm_Lock() call is
3382
3492
   performed.
3383
3493
 
3384
3494
 * Optimize the SMB FindFirst processing for the case in which there
3385
3495
   are no wildcards.   If a cm_Lookup succeeds, generate a response
3386
 
   from the stat cache entry we have a callback for.  Its cheaper 
 
3496
   from the stat cache entry we have a callback for.  Its cheaper
3387
3497
   than walking each buffer of directory data associated with the
3388
3498
   directory stat cache entry when we have thousands of directory
3389
3499
   entries to search.
3390
3500
 
3391
3501
 * Increase the SMB Ioctl MaxData size to support larger token sizes
3392
3502
 
3393
 
 * Disable autorun of the AFS Server Wizard when the AFS Server is 
 
3503
 * Disable autorun of the AFS Server Wizard when the AFS Server is
3394
3504
   installed.
3395
3505
 
3396
3506
 * Add AFS Server service dependencies on tcpip and PNP_TDI
3412
3522
   are not reliably delivered so it is possible the afs service will
3413
3523
   not be accessible.  However, this is the best we can do.
3414
3524
 
3415
 
 * don't allow environment variables we set in afslogon.dll to be 
 
3525
 * don't allow environment variables we set in afslogon.dll to be
3416
3526
   inherited by child processes
3417
3527
 
3418
3528
 * force an rx connection reset if VICECONNBAD or VICETOKENDEAD are
3438
3548
 * Enable renaming of directories from the Explorer Shell when
3439
3549
   Offline Folders is enabled
3440
3550
 
3441
 
 * An error is reported in response to the SMB ReceiveCoreFlush 
 
3551
 * An error is reported in response to the SMB ReceiveCoreFlush
3442
3552
   request when an error has not occurred.
3443
3553
 
3444
3554
Since 1.5.9:
3450
3560
 * do not reset netbios when performing loopback checks.  doing
3451
3561
   so will break the existing lana bind
3452
3562
 
3453
 
 * remove a deadlock in smb3.c QPathInfo 
 
3563
 * remove a deadlock in smb3.c QPathInfo
3454
3564
 
3455
3565
Since 1.5.8:
3456
3566
 
3474
3584
 * modify the buffer synchronization thread to write all dirty
3475
3585
   buffers and sleep only when there is no work to be done
3476
3586
 
3477
 
 * improve behavior of cache manager when large numbers of 
 
3587
 * improve behavior of cache manager when large numbers of
3478
3588
   temporary files are being created by multiple clients within
3479
3589
   the same directory.
3480
3590
 
3504
3614
 * Check that afsd_service.exe is running before performing
3505
3615
   a pioctl call.
3506
3616
 
3507
 
 * Force AFS Shell Extension to load resource DLL using 
 
3617
 * Force AFS Shell Extension to load resource DLL using
3508
3618
   afs_shl_ext.dll as a base name.
3509
3619
 
3510
 
 * (Wix) install afs_shl_ext_XXXX.dll and afs_creds_XXXX.dll in 
 
3620
 * (Wix) install afs_shl_ext_XXXX.dll and afs_creds_XXXX.dll in
3511
3621
   OpenAFS\Client\Program
3512
3622
 
3513
3623
 * Fix SMB_SET_FILE_END_OF_FILE_LENGTH
3531
3641
   obtained on the next buffer in a chain before releasing the
3532
3642
   current one.
3533
3643
 
3534
 
 * do not generate MessageBox dialogs on network errors.  they 
 
3644
 * do not generate MessageBox dialogs on network errors.  they
3535
3645
   cause more trouble then they are worth.
3536
3646
 
3537
3647
 * move GlobalAutoMapper into a separate thread so that it does
3539
3649
   does not return.
3540
3650
 
3541
3651
 * restrict hard dead and connection timeouts to the CIFS Session
3542
 
   Timeout value.  This is being done to try to prevent virtual 
 
3652
   Timeout value.  This is being done to try to prevent virtual
3543
3653
   circuits from being destroyed prematurely.
3544
3654
 
3545
3655
 * Fix the code that writes the backconnectionhostnames value
3546
 
   to ensure that the data buffer is written with the correct 
 
3656
   to ensure that the data buffer is written with the correct
3547
3657
   length.
3548
3658
 
3549
3659
 (there were no windows specific changes between 1.5.4 and 1.5.5)
3559
3669
 
3560
3670
 * WiX installer updated to version 2.0.4221.0
3561
3671
 
3562
 
 * Updates to the IFS functionality for 64-bit correctness and 
 
3672
 * Updates to the IFS functionality for 64-bit correctness and
3563
3673
   permit compilation.   The IFS functionality works for pioctl()
3564
3674
   operations but not much else at this point.
3565
3675
 
3566
3676
 * A major re-write of the OpenAFS implementation of the CIFS Tran2
3567
 
   query and set functions.  
 
3677
   query and set functions.
3568
3678
 
3569
3679
 * Ignore the Windows CIFS client session timeout entirely.  Timeout
3570
3680
   only after the AFS Hard Dead Timeout period expires.
3571
3681
 
3572
3682
Since 1.5.2:
3573
3683
 
3574
 
 * move headers, libraries, and samples from OpenAFS\Client to 
 
3684
 * move headers, libraries, and samples from OpenAFS\Client to
3575
3685
   OpenAFS\SDK
3576
3686
 
3577
3687
 * remove the auto-registration of AFS IDs for foreign cells
3578
 
   from integrated logon.  this permits afslogon.dll to avoid 
3579
 
   initializing the RX library.  afslogon.dll is a network 
 
3688
   from integrated logon.  this permits afslogon.dll to avoid
 
3689
   initializing the RX library.  afslogon.dll is a network
3580
3690
   provider library and as such it is loaded into all applications
3581
3691
   which perform a CreateProcessAsUser call.  Initializing the
3582
3692
   RX library spawns background threads to listen for inbound
3583
 
   packets.  When the network provider is unloaded from the 
 
3693
   packets.  When the network provider is unloaded from the
3584
3694
   process, the RX library does not cleanup the threads.  If they
3585
3695
   continue to execute after the library is unloaded, the process
3586
3696
   will crash.
3595
3705
   displays the current uuid and allows a new one to be generated
3596
3706
   on the fly without restarting the afs client service.
3597
3707
 
3598
 
 * fix the 64-bit installers to properly document the install 
 
3708
 * fix the 64-bit installers to properly document the install
3599
3709
   location
3600
3710
 
3601
3711
 * move help files to the proper location so they can be located by
3602
3712
   the system tray tool and the control panel.
3603
3713
 
3604
 
 * "over quota" and "disk full" errors were not being reported to the 
 
3714
 * "over quota" and "disk full" errors were not being reported to the
3605
3715
   caller.
3606
3716
 
3607
3717
 * largefile support has been added.  Files greater than 31-bits can no
3623
3733
   to appear as standard files.  This prevented Microsoft Vista from
3624
3734
   being able to walk the AFS directory tree.
3625
3735
 
3626
 
 * Mount points must be reported as directories in response to 
 
3736
 * Mount points must be reported as directories in response to
3627
3737
   Query Path Info operations.
3628
3738
 
3629
 
 * A deadlock was detected when performing "fs flushall" if the 
3630
 
   file server reports VNOVNODE.   The scp->createBufferLock is 
3631
 
   already held by the current thread and there is no mechanism 
3632
 
   to propagate the knowledge.  Therefore, an alternate mechanism 
3633
 
   for clearing the cache must be developed.  A new function 
3634
 
   cm_RecycleSCache(scp,flags) has been extracted from 
3635
 
   cm_GetNewSCache().  This function performs the task of recycling 
3636
 
   an cm_scache_t object.  When called from cm_GetNewSCache() with 
3637
 
   no flags the expectation is that there are no associated buffers 
3638
 
   that are queued to be read or written.  When called from 
 
3739
 * A deadlock was detected when performing "fs flushall" if the
 
3740
   file server reports VNOVNODE.   The scp->createBufferLock is
 
3741
   already held by the current thread and there is no mechanism
 
3742
   to propagate the knowledge.  Therefore, an alternate mechanism
 
3743
   for clearing the cache must be developed.  A new function
 
3744
   cm_RecycleSCache(scp,flags) has been extracted from
 
3745
   cm_GetNewSCache().  This function performs the task of recycling
 
3746
   an cm_scache_t object.  When called from cm_GetNewSCache() with
 
3747
   no flags the expectation is that there are no associated buffers
 
3748
   that are queued to be read or written.  When called from
3639
3749
   cm_Analyze() with the CM_SCACHE_RECYCLEFLAG_DESTROY_BUFFERS
3640
 
   flag, any queued buffers will be de-queued and marked as if 
 
3750
   flag, any queued buffers will be de-queued and marked as if
3641
3751
   the operations were performed so the data can be discarded.
3642
3752
 
3643
3753
 * CM_ERROR codes were logged as "unknown" by cm_Analyze.
3653
3763
 * In cm_GetNewSCache, do not allow Freelance SCache entries to be
3654
3764
   recycled.  Choose a new entry if cm_RecycleSCache fails.
3655
3765
 
3656
 
 * Speed up the performance of the cache manager by not 
3657
 
   holding the smb_fid_t mutex across calls to cm_SyncOp 
 
3766
 * Speed up the performance of the cache manager by not
 
3767
   holding the smb_fid_t mutex across calls to cm_SyncOp
3658
3768
   and AFS RPCs.
3659
3769
 
3660
3770
 * Ensure that all smb_fid_t flag references are protected.
3661
3771
 
3662
 
 * Remove a deadlock between smb_fid_t mutex and 
 
3772
 * Remove a deadlock between smb_fid_t mutex and
3663
3773
   smb_rctLock introduced in 1.4.1.
3664
3774
 
3665
3775
 * Fix aklog AFSID lookup to use not send the realm
3666
 
   name when the realm is the local realm for the 
3667
 
   cell.  The PT Server doesn't strip the realm 
 
3776
   name when the realm is the local realm for the
 
3777
   cell.  The PT Server doesn't strip the realm
3668
3778
   name when it is the local realm.
3669
3779
 
3670
 
 * Treat "\\afs\*." as an alias for "\\afs\all" 
 
3780
 * Treat "\\afs\*." as an alias for "\\afs\all"
3671
3781
 
3672
3782
 * Dynamically adjust the priority of server threads
3673
 
   based upon the age of the CIFS request that is 
 
3783
   based upon the age of the CIFS request that is
3674
3784
   being processed.  The priority is bumped one level
3675
3785
   for every 15 seconds of processing time.
3676
3786
 
3677
 
 * The original openafs contribution mis-used the 
 
3787
 * The original openafs contribution mis-used the
3678
3788
   cm_GetCallback function.  This function should only
3679
3789
   be called as a side effect of a call to
3680
3790
   cm_SyncOp(CM_SCACHESYNC_NEEDCALLBACK).  The way it
3681
 
   was being called results in a FetchStatus RPC being 
 
3791
   was being called results in a FetchStatus RPC being
3682
3792
   performed even when the client already has a valid
3683
3793
   callback and does so in a manner that destroys the
3684
 
   synchronization of the threads that are calling 
3685
 
   cm_SyncOp.  If nothing else this results in a 
 
3794
   synchronization of the threads that are calling
 
3795
   cm_SyncOp.  If nothing else this results in a
3686
3796
   significant performance penalty.
3687
3797
 
3688
3798
 * More changes to cleanup of smb_vc_t objects in
3691
3801
 * Reduce the amount of Power Management event logging
3692
3802
   to afsd_init.log
3693
3803
 
3694
 
 * If the client detects that the IP address has 
 
3804
 * If the client detects that the IP address has
3695
3805
   changed, force the use of new RX connections.  This
3696
3806
   enables the file server to recognize that the client
3697
3807
   has moved.
3698
3808
 
3699
 
 * Remove a race condition and deadlock associated 
 
3809
 * Remove a race condition and deadlock associated
3700
3810
   with cleanup of smb_vc_t objects.
3701
3811
 
3702
3812
 * Fix the ANSI filename support.  One function that
3703
3813
   required it was missing the translations.
3704
3814
 
3705
 
Changes not present in 1.4.1 and since 1.5.0: 1.5.1 released 
 
3815
Changes not present in 1.4.1 and since 1.5.0: 1.5.1 released
3706
3816
(24 April 2006)
3707
3817
 
3708
3818
 * Add a DllMain() function to afspthread.dll.  Perform
3711
3821
   to avoid crashes in afspthread.dll when applications
3712
3822
   which load/unload the dll attempt to terminate.
3713
3823
 
3714
 
 * Lock request behavior has been altered.  As of this 
 
3824
 * Lock request behavior has been altered.  As of this
3715
3825
   release a locally allocated lock will be used whenever
3716
 
   the volume is RO or the requesting user's permissions 
 
3826
   the volume is RO or the requesting user's permissions
3717
3827
   are 'rl'.  This will allow end users to execute programs
3718
3828
   from RW volumes when they do not have the 'k' privilege.
3719
3829
 
3720
3830
   Note that a recent discovery indicates that the 'k' bit
3721
 
   is only supposed to control the ability to obtain read 
3722
 
   locks.  Write locks are to be controlled by the 'w' and 
3723
 
   'i' privilege bits.  
 
3831
   is only supposed to control the ability to obtain read
 
3832
   locks.  Write locks are to be controlled by the 'w' and
 
3833
   'i' privilege bits.
3724
3834
 
3725
3835
 * Code has been added to enable the cache manager to be
3726
3836
   able to obtain the AFSID of the authenticated user.
3727
3837
   This is required to be able to determine when "Insert"
3728
3838
   privileges should apply.  AFS considers a file to be
3729
 
   a new file whenever the owner's AFSID matches the 
 
3839
   a new file whenever the owner's AFSID matches the
3730
3840
   AFSID of the user.  The current implementation relies
3731
3841
   on the name specified during the SetToken call to be
3732
 
   correct.  This will be replaced in the future with a 
3733
 
   new RPC that allows the AFSID of the authenticated 
 
3842
   correct.  This will be replaced in the future with a
 
3843
   new RPC that allows the AFSID of the authenticated
3734
3844
   user to be obtained.
3735
3845
 
3736
 
 * A 32-bit-tools installer for use on 64-bit systems 
 
3846
 * A 32-bit-tools installer for use on 64-bit systems
3737
3847
   is now available.  These tools are for use with 32-bit
3738
3848
   versions of Kerberos for Windows or JPSoftware's 4NT.
3739
3849
 
3753
3863
 
3754
3864
Changes not present in 1.4.1: 1.5.0 released (16 Feb 2006)
3755
3865
 
3756
 
 * Update build system to include the "sys_name" in the 
 
3866
 * Update build system to include the "sys_name" in the
3757
3867
   obj and dest paths.
3758
3868
 
3759
 
 * optimize the number of calls to obtain the smb_user_t for a 
 
3869
 * optimize the number of calls to obtain the smb_user_t for a
3760
3870
   smb virtual circuit.
3761
3871
 
3762
3872
 * add logging of server addresses, status and capabilities when
3781
3891
 * Byte range locking (when locks will be obtained from the
3782
3892
   is still under discussion)
3783
3893
 
3784
 
 * 64-bit Windows operating systems now supported 
 
3894
 * 64-bit Windows operating systems now supported
3785
3895
   (XP SP2 64-bit, 2003 SP1 64-bit, 2003 R2 64-bit)
3786
3896
   This is a native 64-bit implementation of OpenAFS for Windows.
3787
 
   There is currently no 64-bit version of KFW and therefore 
3788
 
   there is no (easy) method for obtaining AFS credentials.  
 
3897
   There is currently no 64-bit version of KFW and therefore
 
3898
   there is no (easy) method for obtaining AFS credentials.
3789
3899
   32-bit KFW 3.0 can be used with 32-bit OAFW libraries
3790
 
   to obtain AFS tokens but there is not for the feint of 
 
3900
   to obtain AFS tokens but there is not for the feint of
3791
3901
   heart.
3792
3902
 
3793
 
 * A faster implementation of the fcrypt algorithms improves 
 
3903
 * A faster implementation of the fcrypt algorithms improves
3794
3904
   performance.
3795
3905
 
3796
3906
 * The afsd_service.exe now supplies Event Log Message Text.
3798
3908
   of message configuration.
3799
3909
 
3800
3910
 * When afs servers are unreachable and network stack returns
3801
 
   a WSAEHOSTUNREACHABLE error, the AFS client will immediately 
 
3911
   a WSAEHOSTUNREACHABLE error, the AFS client will immediately
3802
3912
   mark the attempted server as being down.   This allows for
3803
3913
   very fast response to the calling application.  This change
3804
3914
   has a pronounced improvement when the Windows Explorer is
3819
3929
 
3820
3930
 * don't generate an exception when logging unexpected SMB packets
3821
3931
 
3822
 
 * the data structures used by cm_IoctlGetVolumeStatus and 
 
3932
 * the data structures used by cm_IoctlGetVolumeStatus and
3823
3933
   cm_IoctlSetVolumeStatus are not compatible with the CIFS
3824
3934
   Get/Set File Information calls so don't bother executing them.
3825
3935
 
3833
3943
   or renewal.   Server would appear up after the next check servers
3834
3944
   cycle.
3835
3945
 
3836
 
Since 1.4.1 rc7: 
 
3946
Since 1.4.1 rc7:
3837
3947
 
3838
3948
 * Windows will return WSAECONNRESET to the next receive packet
3839
3949
   operation on a socket if an ICMP packet is received in response
3840
3950
   to a packet that was sent and could not be delivered because
3841
 
   the port was unreachable.  We have to treat this as 
 
3951
   the port was unreachable.  We have to treat this as
3842
3952
   WSAEWOULDBLOCK so that we can retry the select() check and
3843
3953
   not mark the connection as bad.
3844
3954
 
3849
3959
   do not bother to remove it from the list and place it on the
3850
3960
   front.
3851
3961
 
3852
 
 * As part of the process of adding a new server, set the 
 
3962
 * As part of the process of adding a new server, set the
3853
3963
   server is down flag and then perform a ping.  If the server
3854
3964
   is up, the flag will be reset.  If the server is down, the
3855
3965
   client will not timeout unnecessarily while attempting to
3856
3966
   perform real work.
3857
3967
 
3858
 
 * If a Mountpoint String is the empty string, return PATH NOT 
 
3968
 * If a Mountpoint String is the empty string, return PATH NOT
3859
3969
   FOUND.
3860
3970
 
3861
3971
 * Modify behavior of the Network Provider to avoid querying the
3863
3973
 
3864
3974
 * Correct behavior of 'LogoffPreserveTokens'.  When set, tokens
3865
3975
   will always be preserved regardless of whether or not integrated
3866
 
   logon was used to obtain tokens.  When unset, tokens will be 
3867
 
   destroyed regardless of whether integrated logon was used to 
 
3976
   logon was used to obtain tokens.  When unset, tokens will be
 
3977
   destroyed regardless of whether integrated logon was used to
3868
3978
   obtain the tokens unless the profile is stored in AFS.
3869
3979
 
3870
3980
 * Disable LogoffTransferToken functionality.  The SMB V3 Logoff
3871
3981
   message is being delivered even when the user is not logging
3872
 
   off of the computer.  
 
3982
   off of the computer.
3873
3983
 
3874
3984
 * Fix a deadlock condition introduced in rc6.
3875
3985
 
3876
3986
 * Cell names are case-insensitive.  Since the founding of OpenAFS
3877
3987
   there has been a bug that treated "cell", "Cell", and "CELL" as
3878
 
   different cells.  This would result in what appeared to be 
 
3988
   different cells.  This would result in what appeared to be
3879
3989
   random disappearance of user tokens or a failure to authenticate
3880
3990
   even when tokens were listed by the "tokens" command.
3881
3991
 
3885
3995
   operations were failing to free smb_fid_t objects
3886
3996
 
3887
3997
 * The File Identifiers assigned to smb_fid_t objects could be
3888
 
   given the value 65535 which is 0xFFFF which is also the 
 
3998
   given the value 65535 which is 0xFFFF which is also the
3889
3999
   INVALID_HANDLE value.  Both 0 and 65535 are now treated as
3890
4000
   reserved values.
3891
4001
 
3897
4007
   both returning VNOVNODE.
3898
4008
 
3899
4009
 * Removed all the logic associated with the 'dead_vcp' variable
3900
 
   which must have been added for debugging because its used 
 
4010
   which must have been added for debugging because its used
3901
4011
   was never thread safe and it truly served no purpose.
3902
4012
 
3903
4013
Since 1.4.1 rc4: 1.4.1 rc5 released (25 Jan 2006)
3904
4014
 
3905
4015
 * Re-enabled LogoffTokenTransfer and LogoffTokenTransferTimeout
3906
 
   registry settings.  Default is ON and 120 seconds.  If set to 
 
4016
   registry settings.  Default is ON and 120 seconds.  If set to
3907
4017
   OFF, tokens will not be destroyed.
3908
4018
 
3909
4019
 * Fixed a number of race conditions and reference count problems
3913
4023
   associated file handles, locks, user tokens, and smb session
3914
4024
   resources can be released.
3915
4025
 
3916
 
 * Added a mechanism to allow user tokens to be preserved 
 
4026
 * Added a mechanism to allow user tokens to be preserved
3917
4027
   during integrated login and be freed after logoff.
3918
4028
 
3919
 
 * Check access permissions to the file before the file is 
 
4029
 * Check access permissions to the file before the file is
3920
4030
   truncated.
3921
4031
 
3922
4032
 * More improvements to the handling of SMB Virtual Circuits
3936
4046
 
3937
4047
 * disable to use of AFS file locks.  byte range locking is still
3938
4048
   implemented but all locks are managed locally.  This prevents
3939
 
   multiple processes from editing the same file on the same 
3940
 
   machine but it does prevent multiple processes on separate 
 
4049
   multiple processes from editing the same file on the same
 
4050
   machine but it does prevent multiple processes on separate
3941
4051
   machines from modifying the file.
3942
4052
 
3943
4053
Since 1.4.1 rc2: 1.4.1 RC3 released (4 Jan 2006)
3944
4054
 
3945
4055
 * A fix to "fs setserverprefs -vlserver".  Multiple calls with
3946
4056
   the same server parameter would result in a panic condition
3947
 
   if the server had not already been contacted by the AFS 
 
4057
   if the server had not already been contacted by the AFS
3948
4058
   client service.
3949
4059
 
3950
 
 * Better warnings are written to the afsd.log file when 
 
4060
 * Better warnings are written to the afsd.log file when
3951
4061
   the Windows RPC Protocols are not properly configured as
3952
4062
   is often the case on Windows 2000.
3953
4063
 
3954
 
 * fix the procmgmt library to restore C RTL signal handlers when 
 
4064
 * fix the procmgmt library to restore C RTL signal handlers when
3955
4065
   it is being detached from the process prior to process termination.
3956
4066
 
3957
4067
Since 1.4.1 rc1: 1.4.1 RC2 released (30 Nov 2005)
4035
4145
 * Fixed several AFS Shell Extension issues:
4036
4146
   - Checking Server Status would only work if a specific cell was
4037
4147
     specified.
4038
 
   - If servers were down, the Server Down dialog would write to 
 
4148
   - If servers were down, the Server Down dialog would write to
4039
4149
     invalid memory and cause explorer.exe to crash
4040
4150
   - Default Push Buttons were not specified for many dialogs
4041
4151
   - The extension would be unloaded by the Explorer Shell and
4042
 
     never be reloaded under some circumstances. 
 
4152
     never be reloaded under some circumstances.
4043
4153
 
4044
4154
 * Fixed the AFS System Tray menu to disappear if another Window
4045
4155
   was selected before a menu item was selected
4046
4156
 
4047
4157
 * Added volume owner and group information to "fs examine" output
4048
4158
 
4049
 
 * Added fs and registry support for enabling/disabling/clearing 
 
4159
 * Added fs and registry support for enabling/disabling/clearing
4050
4160
   rx statistics gathering.
4051
4161
 
4052
4162
Since 1.4.0 rc4: 1.4.0 rc5 released (25 Sep 2005)
4055
4165
   GUIDs for each platform.
4056
4166
 
4057
4167
 * Documentation directory structure and default installation rules
4058
 
   for MSI 
 
4168
   for MSI
4059
4169
 
4060
4170
 * New OpenAFS for Windows HTML Release Notes installed
4061
4171
   as part of the documentation set.
4063
4173
 * Add thread id to rx debugging messages
4064
4174
 
4065
4175
 * When all servers are offline, return a bad network path error
4066
 
   immediately.  This is necessary to allow Explorer to do the 
 
4176
   immediately.  This is necessary to allow Explorer to do the
4067
4177
   right thing and not hang.   The background daemon thread will
4068
4178
   check the down servers every 30 seconds to see if they are
4069
 
   back up.  
 
4179
   back up.
4070
4180
 
4071
4181
Since 1.4.0 rc3: 1.4.0 rc4 released (14 Sep 2005)
4072
4182
 
4084
4194
 
4085
4195
 * Apply AFS Client Admins group protect to AFS Shell Extension
4086
4196
 
4087
 
 * Add support for \\afs\<name> to most AFS Shell Extension 
4088
 
   commands except the symlink methods. 
 
4197
 * Add support for \\afs\<name> to most AFS Shell Extension
 
4198
   commands except the symlink methods.
4089
4199
 
4090
4200
 * when installing the Microsoft Loopback Adapter, enable
4091
 
   MS Client for Networks and prevent an install failure 
 
4201
   MS Client for Networks and prevent an install failure
4092
4202
   by not calling CoInitialize twice in the same thread.
4093
4203
 
4094
4204
 * reload cell vldb values from the CellServDB every two
4095
4205
   hours in case it changes
4096
4206
 
4097
 
 * When updating cell information from DNS, be sure to set 
 
4207
 * When updating cell information from DNS, be sure to set
4098
4208
   a new timeout.
4099
4209
 
4100
 
 * Add support to allow use of \\AFS\<foo> where <foo> is 
4101
 
   either a mount point or symlink.   As <foo> is normally 
4102
 
   treated as a share name, we transform it into \\AFS\all\<foo> 
 
4210
 * Add support to allow use of \\AFS\<foo> where <foo> is
 
4211
   either a mount point or symlink.   As <foo> is normally
 
4212
   treated as a share name, we transform it into \\AFS\all\<foo>
4103
4213
   for processing.
4104
4214
 
4105
 
 * Init 'code' to prevent false errors when integrated logon 
 
4215
 * Init 'code' to prevent false errors when integrated logon
4106
4216
   is disabled and the service is not running
4107
4217
 
4108
4218
Since 1.4.0 rc1: 1.4.0 rc2 released (28 Aug 2005)
4109
4219
 
4110
4220
 * Removed trace log messages that were hampering performance.
4111
4221
 
4112
 
 * Fixed a deadlock that was being triggered by editing Word 
 
4222
 * Fixed a deadlock that was being triggered by editing Word
4113
4223
   documents stored within AFS with WinWord 2003.
4114
4224
 
4115
4225
 * Bit 3 of the TraceOption registry value is now used to set the
4134
4244
   Service is not paused.
4135
4245
 
4136
4246
 * afscreds.exe would display an Obtain Creds dialog when
4137
 
   the expired credentials reminder was triggered even 
 
4247
   the expired credentials reminder was triggered even
4138
4248
   if there was no network path to the KDC.  This is prevented
4139
 
   by adding KDC probe logic to the reminder thread.  
 
4249
   by adding KDC probe logic to the reminder thread.
4140
4250
 
4141
4251
 * afscreds.exe would display expired tokens no differently
4142
4252
   than unexpired ones.  This would make it difficult for the
4143
 
   user to distiguish when the tokens were expired.  For the 
 
4253
   user to distiguish when the tokens were expired.  For the
4144
4254
   English build added a new resource string "(expired) that
4145
 
   is displayed instead of the expiration time. 
 
4255
   is displayed instead of the expiration time.
4146
4256
 
4147
4257
Since 1.3.86:
4148
4258
 * "fs wscell" when executed in freelance mode will return the
4151
4261
   default for aklog and integrated login.
4152
4262
 
4153
4263
 * "fs mkmount, fs rmmount, symlink make, symlink remove" will
4154
 
   no longer work on \\AFS\all when freelance is being used 
 
4264
   no longer work on \\AFS\all when freelance is being used
4155
4265
   unless the user is a member of the "AFS Client Admins" Windows
4156
4266
   Security group.
4157
4267
 
4167
4277
 
4168
4278
 * Fixed the Explorer Shell's remove mountpoint functionality.
4169
4279
 
4170
 
 * Fixed a deadlock caused by the holder of cm_aclLock attempting to 
 
4280
 * Fixed a deadlock caused by the holder of cm_aclLock attempting to
4171
4281
   obtain a mutex lock on a cm_scache_t object whose lock is held by
4172
4282
   a thread attempting to obtain the cm_aclLock.
4173
4283
 
4174
4284
Since 1.3.84:
4175
4285
 * Really fixed DNS AFSDB queries to ensure that "csail" cannot be
4176
 
   misinterpretted as "csail.mit.edu" when the resolver 
 
4286
   misinterpretted as "csail.mit.edu" when the resolver
4177
4287
   is configured to append ".mit.edu" to failed DNS queries.
4178
4288
 
4179
4289
 * Added a new registry key, "LogoffPreserveTokens" (see registry.txt),
4180
4290
   that can be used to force the preservation of user tokens upon logout.
4181
4291
 
4182
 
 * Update the NSIS install scripts to use NSIS 2.07.   This release adds 
 
4292
 * Update the NSIS install scripts to use NSIS 2.07.   This release adds
4183
4293
   recommended installation categories: AFS Client, AFS Administrator,
4184
 
   AFS Server, AFS Development Kit.  Each category includes a different 
 
4294
   AFS Server, AFS Development Kit.  Each category includes a different
4185
4295
   default subset of the OpenAFS components.
4186
4296
 
4187
4297
   The OpenAFS logo is now associated with the NSIS uninstall entry
4189
4299
 
4190
4300
 * The user name associated with AFS tokens when obtained with
4191
4301
   integrated login, the afs systray tool, or aklog will always
4192
 
   include the full Kerberos 5 user principal name regardless of 
 
4302
   include the full Kerberos 5 user principal name regardless of
4193
4303
   whether or not the cell is local to the realm.
4194
4304
 
4195
4305
 * Modify integrated login so that it does not enter an infinite
4208
4318
   put to sleep because of conflicts over buffer operations.
4209
4319
 
4210
4320
Since 1.3.82:
4211
 
 * The OpenAFS integrated logon obtains Kerberos 5 tickets as part of 
 
4321
 * The OpenAFS integrated logon obtains Kerberos 5 tickets as part of
4212
4322
   the process of producing AFS tokens.  The tokens are stored within
4213
4323
   the AFS Client Service but the Kerberos 5 tickets have been discarded.
4214
4324
   New functionality has been added to temporarily copy the tickets to
4224
4334
 * Enforce the delete on close flag specified by the NTCreateX()
4225
4335
   operation.
4226
4336
 
4227
 
 * A race condition in the rx library was fixed that resulted in 
 
4337
 * A race condition in the rx library was fixed that resulted in
4228
4338
   a deadlock in rx_NewCall when the RX_CONN_MAKECALL_WAITING flag
4229
 
   was cleared when threads were still waiting to use the 
4230
 
   connection.   Also, fixed a potential case in which the 
 
4339
   was cleared when threads were still waiting to use the
 
4340
   connection.   Also, fixed a potential case in which the
4231
4341
   connection could be destroyed while threads were waiting to use it.
4232
4342
 
4233
 
 * The DNLC freelist has been seen to become corrupted with still 
 
4343
 * The DNLC freelist has been seen to become corrupted with still
4234
4344
   active entries being stored on the freelist.  Changes were made
4235
4345
   to perform a better job of cleaning entries before placing them
4236
4346
   onto the freelist; marking them with the correct magic value when
4238
4348
   if the cache validation fails.
4239
4349
 
4240
4350
 * Windows Crash Reporting does not get triggered for afsd_service.exe
4241
 
   because it provides its own top level exception handler.  This patch 
4242
 
   places an explicit call to ReportCrash() on platforms which support 
 
4351
   because it provides its own top level exception handler.  This patch
 
4352
   places an explicit call to ReportCrash() on platforms which support
4243
4353
   it.  (XP and above.)
4244
4354
 
4245
4355
   If you configure Crash Reporting via AD Policy to capture crash
4246
4356
   reports within the domain, then you will receive this output.
4247
4357
 
4248
4358
 * Generate MiniDumps independent of the Windows Crash Reporting.
4249
 
 
 
4359
 
4250
4360
   (a) If an exception occurs,a minidump will be generated at the path
4251
 
       %TEMP%\afsd.dmp. The type of minidump defaults to Normal but 
 
4361
       %TEMP%\afsd.dmp. The type of minidump defaults to Normal but
4252
4362
       can be set to any other type via use of the
4253
 
       registry.      
 
4363
       registry.
4254
4364
 
4255
4365
       [HKLM\SOFTWARE\OpenAFS\Client]  MiniDumpType (DWORD)
4256
4366
 
4257
4367
   (b) MiniDumps can be generated at any time using the "fs minidump"
4258
 
       command.   This allows you to generate a minidump without 
 
4368
       command.   This allows you to generate a minidump without
4259
4369
       stopping the process or even requiring the use of a debugger
4260
4370
       on the system.
4261
4371
 
4262
4372
  * an RX connection which reports bad ticket now treats it the same way
4263
 
    the expired ticket is treated.   The ticket is removed from the 
 
4373
    the expired ticket is treated.   The ticket is removed from the
4264
4374
    connection and a new anonymous connection is established.
4265
4375
 
4266
4376
  * fs memdump now requires that the caller be in the AFS Client Admins
4276
4386
  * Remove AFS Gateway option from OpenAFS Control Panel (1.3.82a)
4277
4387
 
4278
4388
Since 1.3.81:
4279
 
  * Fix a race condition in cm_EndCallbackGrantingCall() that 
 
4389
  * Fix a race condition in cm_EndCallbackGrantingCall() that
4280
4390
    could leave 'nrevp' pointing to freed memory.  In the process,
4281
4391
    optimize the processing to ensure that the applications monitoring
4282
 
    the status of the stat cache entry are only notified at most 
 
4392
    the status of the stat cache entry are only notified at most
4283
4393
    once.
4284
4394
 
4285
4395
  * Conditionalize access to the Explorer Shell AFS->Mount Point
4295
4405
    the IPHelper DLL so that Windows XP/2003 and beyond systems
4296
4406
    do not have to manually probe the registry.
4297
4407
 
4298
 
  * CleanupACLEnt() was not being called consistently with 
 
4408
  * CleanupACLEnt() was not being called consistently with
4299
4409
    the cm_scache_t object referred to by the back pointer
4300
4410
    mutex locked. This could in very rare conditions lead to
4301
4411
    an invalid memory access.
4307
4417
 
4308
4418
  * Apparently the problem with multi-domain forests with cross-
4309
4419
    realm trusts to non-Windows realms was not entirely solved.
4310
 
    The authentication to the AFS SMB service failed because 
 
4420
    The authentication to the AFS SMB service failed because
4311
4421
    the wrong name was being used.  Using ASU as an example,
4312
4422
    the authentication was being performed with the name
4313
 
    "QAAD\user" (an account in the forest root) and not 
 
4423
    "QAAD\user" (an account in the forest root) and not
4314
4424
    "user@ASU.EDU (the MIT Kerberos principal used to login with)
4315
4425
 
4316
4426
    The solution was to add an additional dependency on KFW
4317
 
    in order or to be able to easily obtain the client principal 
4318
 
    name stored in the MSLSA ccache TGT.  This information is 
4319
 
    used in two locations:  
4320
 
 
4321
 
    - the pioctl() function 
4322
 
 
4323
 
    - a new WinLogon Event Handler for the "logon" event.  
 
4427
    in order or to be able to easily obtain the client principal
 
4428
    name stored in the MSLSA ccache TGT.  This information is
 
4429
    used in two locations:
 
4430
 
 
4431
    - the pioctl() function
 
4432
 
 
4433
    - a new WinLogon Event Handler for the "logon" event.
4324
4434
 
4325
4435
    The pioctl function will now be able to use the correct
4326
4436
    name when calling WNetAddConnection2() and the "logon"
4327
4437
    event handler will now be able to call WNetAddConnection2().
4328
 
    The hope is that the "logon" event handler will be called 
 
4438
    The hope is that the "logon" event handler will be called
4329
4439
    before the profile is loaded but I have not guarrantee
4330
 
    that will happen. 
 
4440
    that will happen.
4331
4441
 
4332
4442
Since 1.3.80:
4333
4443
  * Fixed a locking error in cm_TryBulkStat() which had the
4334
4444
    potential of deadlocking the system for the length of time
4335
4445
    it takes to perform a bulk status fetch operation.
4336
4446
 
4337
 
  * Replaced time conversion code (UnixTime <-> FILETIME) to 
 
4447
  * Replaced time conversion code (UnixTime <-> FILETIME) to
4338
4448
    be completely arithmetic instead of relying on a bizarre
4339
4449
    algorithm involving a variety of C RTL time functions.
4340
4450
    This has the side effect that UnixTime and FILETIME which
4346
4456
    to the files stored in NTFS or Windows based backup devices.
4347
4457
 
4348
4458
  * Fixed a invalid memory access under a bizarre circumstance.
4349
 
    Windows will allow a physical mass media device to be 
 
4459
    Windows will allow a physical mass media device to be
4350
4460
    installed via Plug N Play to the system and will assign it
4351
4461
    the lowest available drive letter.  This is true even if the
4352
4462
    drive letter is currently assigned in the user session to
4353
4463
    a network device via NET USE (or its equivalent.)  When this
4354
4464
    happens, queries sent to the CIFS server will contain invalid
4355
 
    data.  This invalid data was not being caught by the AFS 
 
4465
    data.  This invalid data was not being caught by the AFS
4356
4466
    Client Service and was resulting in a crash when Freelance
4357
 
    mode was in use.  
 
4467
    mode was in use.
4358
4468
 
4359
4469
  * Fixed a reference count error when registering callbacks
4360
4470
    on a stat cache object if the callback was already registered
4372
4482
    entries.  Allow volume entries to be reused if the maximum
4373
4483
    number have been allocated and their reference count is zero.
4374
4484
 
4375
 
  * If we already have a dead virtual connection object, don't 
 
4485
  * If we already have a dead virtual connection object, don't
4376
4486
    ignore the fact that additional dead vc objects must be taken
4377
4487
    care of.
4378
4488
 
4392
4502
  * Updated CellServDB to Public CellServDB 16 Mar 2005
4393
4503
 
4394
4504
  * Fixed DNS AFSDB queries to ensure that "csail" cannot be
4395
 
    misinterpretted as "csail.mit.edu" when the resolver 
 
4505
    misinterpretted as "csail.mit.edu" when the resolver
4396
4506
    is configured to append ".mit.edu" to failed DNS queries.
4397
4507
 
4398
4508
  * Fixed another case in which the client would replace connections
4399
 
    to the host when it was not necessary.  In this case the 
 
4509
    to the host when it was not necessary.  In this case the
4400
4510
    situation would occur if cryptall was on and the connections
4401
4511
    were unauthenticated due to lack of an appropriate token.
4402
4512
 
4403
 
  * OpenAFS for Windows has failed to work at sites which are 
 
4513
  * OpenAFS for Windows has failed to work at sites which are
4404
4514
    utilizing a cross-realm trust between an MIT/Heimdal realm
4405
4515
    and a multi-domain Windows forest when the workstation being
4406
 
    accessed is not located in the root domain.  This is caused 
4407
 
    by a bug in the workstation which was triggered after the 
 
4516
    accessed is not located in the root domain.  This is caused
 
4517
    by a bug in the workstation which was triggered after the
4408
4518
    introduction of Windows 2003 Server.  When the bug is triggered,
4409
4519
    the workstation attempts to authenticate users to afsd_service.exe
4410
 
    by contacting the Domain Controller instead of using the 
 
4520
    by contacting the Domain Controller instead of using the
4411
4521
    LSA loopback authentication mechanism.
4412
4522
 
4413
 
    One of the reasons this bug occurs is because the workstation    
 
4523
    One of the reasons this bug occurs is because the workstation
4414
4524
    does not have a reliable way of knowing that the service whose
4415
4525
    netbios name is "AFS" is located on the workstation.  This will
4416
 
    be fixed starting in Longhorn Beta 1 by Microsoft.  The 
4417
 
    "BackConnectionHostNames" registry value will be used to 
 
4526
    be fixed starting in Longhorn Beta 1 by Microsoft.  The
 
4527
    "BackConnectionHostNames" registry value will be used to
4418
4528
    indicate that the authentications to that service name should
4419
4529
    be performed using the loopback authentication mechanism.
4420
4530
 
4421
4531
    In the meantime, when Logon Caching is enabled, we can force
4422
4532
    afsd_service.exe to authenticate using the logon cache before
4423
4533
    contacting the Domain Controller.  This will work with both
4424
 
    password and smart card based logons.  
 
4534
    password and smart card based logons.
4425
4535
 
4426
4536
  * The allDown logic in cm_ConnByMServers() was wrong.  The allDown
4427
 
    flag should not be cleared if a volume's server reference is 
4428
 
    marked as "offline".  In the case where all of the volume's 
 
4537
    flag should not be cleared if a volume's server reference is
 
4538
    marked as "offline".  In the case where all of the volume's
4429
4539
    servers are either "down" or the volumes are "offline", we want
4430
4540
    cm_Analyze() to process the condition as CM_ERROR_ALLOFFLINE
4431
4541
    instead of as CM_ERROR_TIMEDOUT.  In fact, CM_ERROR_TIMEDOUT
4432
4542
    should never occur in practice.
4433
4543
 
4434
4544
    In the case of CM_ERROR_ALLOFFLINE, cm_Analyze() will sleep for
4435
 
    5 seconds, clear the server down and volume busy flags, and 
4436
 
    then force an update from the VLDB.  This allows the client to 
4437
 
    update the location of a volume if the reason for it being 
4438
 
    marked offline is because it is being moved.  Calls to 
 
4545
    5 seconds, clear the server down and volume busy flags, and
 
4546
    then force an update from the VLDB.  This allows the client to
 
4547
    update the location of a volume if the reason for it being
 
4548
    marked offline is because it is being moved.  Calls to
4439
4549
    cm_ConnByMServers() will be retried either until success or
4440
4550
    the RDRtimeout period is reached.
4441
4551
 
4442
 
  * Correct the Power Management code behavior in response to 
 
4552
  * Correct the Power Management code behavior in response to
4443
4553
    Standby, Suspend, and Shutdown events.  Instead of flushing the
4444
4554
    buffers associated with the mounted SMB submounts, simply write
4445
4555
    all buffers which are marked dirty.
4450
4560
    This functionality is logon domain specific and is only available
4451
4561
    when using KFW for authentication.
4452
4562
 
4453
 
  * Fixed FindNext Invalid Handle error caused by over agressive 
4454
 
    attempts at garbage collecting dirSearch entries when the 
 
4563
  * Fixed FindNext Invalid Handle error caused by over agressive
 
4564
    attempts at garbage collecting dirSearch entries when the
4455
4565
    dirSearch ID wraps from the maximum value to 1.
4456
4566
 
4457
 
  * Add support for registry defined server preferences for VLDB and 
 
4567
  * Add support for registry defined server preferences for VLDB and
4458
4568
    File servers.  See registry.txt for details.
4459
4569
 
4460
4570
  * Increased default cache size to 96MB and default number of cache
4462
4572
 
4463
4573
  * Fixed refCount leaks related to directory lookups and pioctl calls.
4464
4574
 
4465
 
  * Callbacks revoked during a race condition with an attempt to 
 
4575
  * Callbacks revoked during a race condition with an attempt to
4466
4576
    obtain the same callback no longer result in an inaccessible
4467
4577
    stat cache entry.
4468
4578
 
4483
4593
  * Pay attention to the MIT KFW registry configuration for automatic
4484
4594
    importation of MSLSA credentials. (SOFTWARE\MIT\Leash32,MsLsaImport)
4485
4595
 
4486
 
  * Fix (once again) case-sensitive comparisons which was apparently 
 
4596
  * Fix (once again) case-sensitive comparisons which was apparently
4487
4597
    broken in 1.3.72.
4488
4598
 
4489
4599
  * Activate support for vos listvol -format
4493
4603
    is localized.  Now we lookup the name of the group by using the
4494
4604
    Administrators Group Alias Relative ID.
4495
4605
 
4496
 
  * Multiple cell token acquisition within afscreds.exe was broken in the 
 
4606
  * Multiple cell token acquisition within afscreds.exe was broken in the
4497
4607
    case of Kerberos 5 cross realm authentication.  Instead of contacting
4498
 
    the KDC associated with the cell's realm, afscreds would obtain a 
 
4608
    the KDC associated with the cell's realm, afscreds would obtain a
4499
4609
    token from the KDC of the user's realm.  This would result in
4500
 
    "invalid kvno errors" while authenticating to the AFS servers.  
 
4610
    "invalid kvno errors" while authenticating to the AFS servers.
4501
4611
    Unauthenticated access would work.  The symptoms would vary based upon
4502
4612
    whether or not the VLDB servers had been contacted using unauthenticated
4503
4613
    connections prior to the user obtaining tokens.
4504
4614
 
4505
 
  * The list of ACL entries was becoming corrupted.  It appears as if 
 
4615
  * The list of ACL entries was becoming corrupted.  It appears as if
4506
4616
    an ACL when it expires was not being appropriately cleaned up.  In
4507
 
    fact, it was left in the list of ACLs associated with the scache 
 
4617
    fact, it was left in the list of ACLs associated with the scache
4508
4618
    entry.
4509
4619
 
4510
4620
  * Changed the default @sys name list to "x86_win32 i386_w2k i386_nt40"
4513
4623
 
4514
4624
  * When executing executables, Windows provides a mechanisms by which
4515
4625
    the normal search for DLLs can be bypassed.  If a file foo.exe is
4516
 
    being executed and there exists a file or directory "foo.exe.local" 
 
4626
    being executed and there exists a file or directory "foo.exe.local"
4517
4627
    (the contents are ignored if a file), then Windows will search for
4518
 
    DLLs first in the "foo.exe.local" directory and second in the 
4519
 
    directory in which the "foo.exe" file is located.  
 
4628
    DLLs first in the "foo.exe.local" directory and second in the
 
4629
    directory in which the "foo.exe" file is located.
4520
4630
 
4521
 
    Previous releases of OAFW would improperly return 
4522
 
    STATUS_NOT_A_DIRECTORY instead of the expected 
 
4631
    Previous releases of OAFW would improperly return
 
4632
    STATUS_NOT_A_DIRECTORY instead of the expected
4523
4633
    STATUS_OBJECT_PATH_NOT_FOUND.  This would cause the Windows SMB client
4524
 
    to terminate the search for the DLL causing the execution of the 
 
4634
    to terminate the search for the DLL causing the execution of the
4525
4635
    application to fail.
4526
4636
 
4527
 
  * Rework the reference counting of smb_vc_t objects.  The references  
 
4637
  * Rework the reference counting of smb_vc_t objects.  The references
4528
4638
    stored in the waiting locks were not counted.  This could result in
4529
4639
    an assertion if the reference count drops to zero.
4530
4640
 
4532
4642
    when running in freelance mode.
4533
4643
 
4534
4644
  * Added support for persistent caching of file contents, stat entries,
4535
 
    volume data, cell data, and name lookup data.  When the registry 
4536
 
    value, "NonPersistentCaching", is not defined or set to 0 the file 
4537
 
    specified by "CachePath" becomes a persistent cache file.   The 
 
4645
    volume data, cell data, and name lookup data.  When the registry
 
4646
    value, "NonPersistentCaching", is not defined or set to 0 the file
 
4647
    specified by "CachePath" becomes a persistent cache file.   The
4538
4648
    size of the cache file is computed at run time.  It has a maximum
4539
 
    size of approximately 1.2GB.  The contents of the file will be 
 
4649
    size of approximately 1.2GB.  The contents of the file will be
4540
4650
    validated according to the rules specified by the "ValidateCache"
4541
 
    registry value.  
 
4651
    registry value.
4542
4652
 
4543
 
  * Added support for UUIDs.  UUIDs are kept for as long as the 
 
4653
  * Added support for UUIDs.  UUIDs are kept for as long as the
4544
4654
    cache file is intact.
4545
4655
 
4546
 
  * Added cmdebug.exe and support cache manager debugging callback 
 
4656
  * Added cmdebug.exe and support cache manager debugging callback
4547
4657
    interfaces in afsd_service.exe.
4548
4658
 
4549
 
    Usage: cmdebug -servers <server machine> [-port <IP port>] [-long] 
 
4659
    Usage: cmdebug -servers <server machine> [-port <IP port>] [-long]
4550
4660
                   [-addrs] [-cache] [-help]
4551
4661
    Where: -long   print all info
4552
4662
           -addrs  print only host interfaces
4553
4663
           -cache  print only cache configuration
4554
4664
 
4555
 
  * Symlinks to \\AFS\[all\]... will now be treated the same as 
 
4665
  * Symlinks to \\AFS\[all\]... will now be treated the same as
4556
4666
    symlinks to /afs/....   However, please use /afs/... as otherwise
4557
4667
    the symlinks won't work on Unix.
4558
 
  
4559
 
  * Correct a problem with local CellID allocation for cells whose 
 
4668
 
 
4669
  * Correct a problem with local CellID allocation for cells whose
4560
4670
    server list is obtained via DNS instead of a CellServDB file.  If
4561
4671
    the DNS information expires the CellID assigned to the entry will
4562
4672
    be changed.  This causes all of the cm_scache_t objects which refer
4563
 
    to the old cellID number to become useless.  Attempts to access 
 
4673
    to the old cellID number to become useless.  Attempts to access
4564
4674
    files or directories with cm_scache_t objects using the old cellID
4565
4675
    will fail since the server list cannot be obtained.
4566
4676
 
4571
4681
  * The AFS Service needs to respond to SERVICE_ACCEPT_SHUTDOWN messages
4572
4682
    in addition to SERVICE_ACCEPT_STOP.
4573
4683
 
4574
 
  * Move RPC shutdown until after the SMB and RX shutdown procedures 
 
4684
  * Move RPC shutdown until after the SMB and RX shutdown procedures
4575
4685
    complete.  Block until RPC shutdown is complete.
4576
4686
 
4577
4687
  * Modify afslogon.dll (integrated logon) to wait for service if its
4578
 
    state is START_PENDING.  If the timeout period occurs, reset to 
 
4688
    state is START_PENDING.  If the timeout period occurs, reset to
4579
4689
    the retry interval and not the sleep interval.
4580
4690
 
4581
4691
  * When renewing the server list for a cell obtained via DNS AFSDB
4582
 
    records, the cm_cell_t entry must be removed from the list of all 
 
4692
    records, the cm_cell_t entry must be removed from the list of all
4583
4693
    cells.  Otherwise, the list of cells will be corrupted.
4584
 
 
 
4694
 
4585
4695
  * In the dcache and scache modules, use the cm_scache_t dataVersion
4586
 
    instead of the cm_fakeDirVersion.  
 
4696
    instead of the cm_fakeDirVersion.
4587
4697
 
4588
4698
  * Synchronize fs.c with the unix version.
4589
4699
 
4601
4711
Since 1.3.76:
4602
4712
 
4603
4713
  * A bug affecting new installations of 1.3.75/76 would result in
4604
 
    the creating of incorrect mountpoints in the freelance root.afs 
 
4714
    the creating of incorrect mountpoints in the freelance root.afs
4605
4715
    volume for the default cell.
4606
4716
 
4607
4717
    If "fs \\afs\all\<cellname>" lists a volume name of "root" instead
4610
4720
 
4611
4721
          fs rmmount \\afs\all\<cellname>
4612
4722
          fs rmmount \\afs\all\.<cellname>
4613
 
        
 
4723
 
4614
4724
          fs mkmount \\afs\all\<cellname> root.cell <cellname>
4615
4725
          fs mkmount \\afs\all\.<cellname> root.cell <cellname> -rw
4616
4726
 
4624
4734
Since 1.3.74:
4625
4735
  * Added a new registry value, "StoreAnsiFilenames", which can be used
4626
4736
    to force the use of ANSI character sets instead of OEM Code Pages.
4627
 
    This feature is useful when users require the ability to create 
 
4737
    This feature is useful when users require the ability to create
4628
4738
    filenames with 8-bit characters and need to access the files from
4629
4739
    both Latin-1 based Unix systems as well as from Windows.
4630
4740
 
4631
4741
    Activation of this feature will prevent access to files stored with
4632
4742
    8-bit OEM characters.
4633
4743
 
4634
 
  * Shutdown all SMB threads in a synchronized manner when stopping the 
 
4744
  * Shutdown all SMB threads in a synchronized manner when stopping the
4635
4745
    service.
4636
 
 
 
4746
 
4637
4747
  * There is currently a maximum cache size of 1.3GB.  The limit is imposed
4638
4748
    by the largest contiguous block of unused memory within the 2GB process
4639
4749
    space which can be assigned to the memory mapped file.  Unfortunately,
4651
4761
    to enhance the ability to afsd_service.exe to detect potential
4652
4762
    destablizing mixtures of DLLs from incompatible distributions.
4653
4763
 
4654
 
    Added code to auto-disable the signature verification check if 
 
4764
    Added code to auto-disable the signature verification check if
4655
4765
    the desired cache size is greater then 700MB.
4656
4766
 
4657
 
  * Windows' WinTrustVerify(WIN_SPUB_ACTION_PUBLISHED_SOFTWARE) is 
4658
 
    used to verify the validity of the afsd_service.exe binary 
 
4767
  * Windows' WinTrustVerify(WIN_SPUB_ACTION_PUBLISHED_SOFTWARE) is
 
4768
    used to verify the validity of the afsd_service.exe binary
4659
4769
    as well as each of the AFS DLLs loaded by the service.  Not only
4660
 
    must the digital signature be valid but the signatures of the 
 
4770
    must the digital signature be valid but the signatures of the
4661
4771
    DLL must be signed by the same entity as the service.
4662
4772
 
4663
4773
  * Implement new functions: cm_freelanceMountPointExists and
4666
4776
    ensure that name collisions do not occur and that empty strings
4667
4777
    are not valid file names.
4668
4778
 
4669
 
    A symlink may not have a name which would resolve to a valid 
 
4779
    A symlink may not have a name which would resolve to a valid
4670
4780
    cell name.  Doing so would prevent access to the cell.
4671
4781
 
4672
4782
  * Add missing cm_HoldSCacheNoLock call to Freelance mount point
4677
4787
  * Add registry entries to provide mappings from the afsdsbmt.ini
4678
4788
    to the new locations for applications which count on the use
4679
4789
    of the old Profile file APIs.  These apps are likely to fail
4680
 
    if the user does not have administrator privileges and the 
 
4790
    if the user does not have administrator privileges and the
4681
4791
    registry is locked down.
4682
4792
 
4683
 
  * The afs_config.exe submounts dialog had two errors.  
 
4793
  * The afs_config.exe submounts dialog had two errors.
4684
4794
    First, attempts to remove entries failed because the registry
4685
 
    key was being opened without KEY_WRITE privileges.  
 
4795
    key was being opened without KEY_WRITE privileges.
4686
4796
    Second, when editing a submount entry, changing the name
4687
 
    would add a new key and leave the original one in place. 
4688
 
    Now the original submount will be removed if its name is 
 
4797
    would add a new key and leave the original one in place.
 
4798
    Now the original submount will be removed if its name is
4689
4799
    changed.
4690
4800
 
4691
4801
  * In recent months there have been several incidents in which
4692
 
    users have experienced problems starting or accessing 
 
4802
    users have experienced problems starting or accessing
4693
4803
    afsd_service.exe and after significant effort has been spent
4694
4804
    it has turned out that they have two versions of AFS on the
4695
 
    machine or an inconsistent set of DLLs.  
 
4805
    machine or an inconsistent set of DLLs.
4696
4806
 
4697
4807
    Code has now been added to afsd_service.exe which will walk
4698
4808
    the list of modules loaded by afsd_service.exe and validate
4699
4809
    that the version of the AFS DLLs matches the version of the
4700
4810
    afsd_service.exe executable.  If they do not match the service
4701
 
    will not start.  
 
4811
    will not start.
4702
4812
 
4703
4813
  * When Freelance mode is enabled and there is no registry
4704
4814
    key HKLM\SOFTWARE\OpenAFS\Client\Freelance, afsd_service.exe
4720
4830
 
4721
4831
Since 1.3.72/73:
4722
4832
  * Fix the locking of objects during Directory Searches in the
4723
 
    SMB/CIFS server.  The failure to properly lock the reference 
4724
 
    counts was resulting in the premature freeing of smb_dirSearch_t 
 
4833
    SMB/CIFS server.  The failure to properly lock the reference
 
4834
    counts was resulting in the premature freeing of smb_dirSearch_t
4725
4835
    objects while they were still in use by the SMB/CIFS client.
4726
4836
    This does not solve the "Invalid Handle" problem.
4727
4837
 
4728
4838
  * Fix Find Cell By Name pioctl call to return a valid cell
4729
 
    name for the Freelance fake root.afs volume.  
 
4839
    name for the Freelance fake root.afs volume.
4730
4840
    "Freelance.Local.Root".
4731
4841
 
4732
4842
  * Fix the Explorer Shell Extension Symlinks->Add operation.
4752
4862
    afscreds.exe when the Kerberos 5 principal name contains a dot.
4753
4863
 
4754
4864
  * Modify the IsAdmin() function to always treat the local SYSTEM
4755
 
    account as an AFS client administrator.  Affects fs.exe and 
 
4865
    account as an AFS client administrator.  Affects fs.exe and
4756
4866
    afs_config.exe.
4757
4867
 
4758
4868
  * Modify the internal handling of Quota Exceeded errors
4761
4871
    and the osi library to use unsigned long instead of signed short.
4762
4872
    A similar fix has been applied to the afs rpc (rx) library.
4763
4873
 
4764
 
  * fix the Windows cache manager to prevent it from replacing the 
 
4874
  * fix the Windows cache manager to prevent it from replacing the
4765
4875
    rx_connection object associated with the cm_conn_t object on each
4766
 
    and every operation if "fs crypt" was set.  This explains the 
 
4876
    and every operation if "fs crypt" was set.  This explains the
4767
4877
    dramatic performance difference when crypt is used vs clear.
4768
 
    The problem: 'cryptall', a boolean flag indicating whether or not 
4769
 
    "fs crypt" is set, was being compared to the rx_connection 
 
4878
    The problem: 'cryptall', a boolean flag indicating whether or not
 
4879
    "fs crypt" is set, was being compared to the rx_connection
4770
4880
    cryptlevel which is either rxkad_clear:0 or rxkad_crypt:2.
4771
 
    1 != 2 and therefore the rx_connection was always destroyed 
 
4881
    1 != 2 and therefore the rx_connection was always destroyed
4772
4882
    and replaced on each and every operation.
4773
4883
 
4774
4884
    Lock the cm_conn_t object around every call to RXAFS_xxxx functions.
4784
4894
    remove groups when given -create or -remove.  The string comparison
4785
4895
    test was wrong.
4786
4896
 
4787
 
  * fs sysname now accepts a list of sysname values 
 
4897
  * fs sysname now accepts a list of sysname values
4788
4898
 
4789
4899
  * added a new registry value HKLM\SOFTWARE\OpenAFS\Client "IoctlDebug"
4790
4900
    DWORD which when set to a non-zero value will cause error message
4791
 
    text to be output to stderr from the pioctl() routine.  Useful in 
 
4901
    text to be output to stderr from the pioctl() routine.  Useful in
4792
4902
    debugging failures of fs.exe, tokens.exe, etc.
4793
4903
 
4794
 
  * added a test to the power management code to only perform a 
 
4904
  * added a test to the power management code to only perform a
4795
4905
    flush operation if there is at least one network adapter which
4796
4906
    is not a loopback adapter.
4797
4907
 
4798
4908
  * Fix bug in loading of registry value HKLM\SOFTWARE\OpenAFS\Client
4799
4909
    "EnableKFW".  This value will not be read if the key
4800
 
    HKCU\SOFTWARE\OpenAFS\Client exists; even if the "EnableKFW" 
 
4910
    HKCU\SOFTWARE\OpenAFS\Client exists; even if the "EnableKFW"
4801
4911
    value under that key does not.
4802
4912
 
4803
4913
  * provide mechanisms to force the use of krb524d for Kerberos 5
4811
4921
  * smb_ReceiveCoreRename() was factored to produce smb_Rename()
4812
4922
    which is used by both the original function and the new
4813
4923
    smb_ReceiveNTRename().  smb_ReceiveNTRename() supports the
4814
 
    creation of HardLinks in addition to Renaming.  smb_Link() 
 
4924
    creation of HardLinks in addition to Renaming.  smb_Link()
4815
4925
    is a new function which creates HardLinks via cm_Link().
4816
4926
    cm_Link() is a new vnodeops function which creates links
4817
4927
    using RXAFS_Link().
4818
4928
 
4819
 
    smb_ReceiveNTRename() does not support the File Copy and 
 
4929
    smb_ReceiveNTRename() does not support the File Copy and
4820
4930
    Move Cluster Information operations described in its interface.
4821
4931
    ReceiveNTRename is under documented in CIFS-TR-1p00_FINAL.pdf.
4822
4932
 
4830
4940
 
4831
4941
  * Log bad packets and unknown operation packets to the trace log
4832
4942
 
4833
 
  * Map CM_ERROR_BADOP to STATUS_NOT_SUPPORTED instead of 
 
4943
  * Map CM_ERROR_BADOP to STATUS_NOT_SUPPORTED instead of
4834
4944
    0xC09820FF
4835
 
  
 
4945
 
4836
4946
  * Update list of known CIFS operations to include all those listed
4837
4947
    in CIFS-TR-1p00_FINAL.pdf.
4838
4948
 
4840
4950
    to support the REG_EXPAND_SZ type.
4841
4951
 
4842
4952
Since 1.3.70:
4843
 
  * A new Windows authorization group "AFS Client Admins" is now 
 
4953
  * A new Windows authorization group "AFS Client Admins" is now
4844
4954
    created and populated with the members of the "Administrators"
4845
4955
    group.  The group is used to determine which accounts on the
4846
4956
    machine may be used to modify the AFS Client Configuration via
4847
 
    the UI and command line tools.  afs_config.exe, fs.exe, 
 
4957
    the UI and command line tools.  afs_config.exe, fs.exe,
4848
4958
 
4849
4959
  * Modify the WinLogon Logoff Event Handler to query NT4 domain
4850
4960
    controllers for the remote profile path if Active Directory
4852
4962
 
4853
4963
  * Fix aklog.exe to not add the AFS ID to the username
4854
4964
 
4855
 
  * PTS registration of new users to foreign cells has been added to 
 
4965
  * PTS registration of new users to foreign cells has been added to
4856
4966
     afscreds.exe
4857
4967
 
4858
 
  * The cm_Daemon thread is used to perform checks for 
4859
 
    down servers, up servers, volumes, callback expirations, 
 
4968
  * The cm_Daemon thread is used to perform checks for
 
4969
    down servers, up servers, volumes, callback expirations,
4860
4970
    lock maintenance and token expiration.  Due to a gaff in
4861
 
    larger integer division the thread never performed any 
 
4971
    larger integer division the thread never performed any
4862
4972
    work.  Instead the current time computation would always
4863
4973
    be less then the trigger times.  This had an adverse affect
4864
4974
    on the client's ability to maintain communication with servers,
4865
4975
    keep volumes up to date, and flush user tokens and acls
4866
4976
    when they have expired. This was broken when the 1.3 branch
4867
 
    was modified to support VC7 which no longer included 
 
4977
    was modified to support VC7 which no longer included
4868
4978
    largeint.lib
4869
4979
 
4870
 
  * An initialization problem with the Freelance code was 
 
4980
  * An initialization problem with the Freelance code was
4871
4981
    detected while fixing the callbackRequest.  The cm_rootSCachep
4872
 
    object is obtained during afsd_InitDaemons() but the callback 
 
4982
    object is obtained during afsd_InitDaemons() but the callback
4873
4983
    information is incomplete.  The callback information will not
4874
4984
    be obtained until cm_MergeStatus is called from within
4875
 
    cm_GetCallback.  Unfortunately, cm_SyncOp did not properly 
 
4985
    cm_GetCallback.  Unfortunately, cm_SyncOp did not properly
4876
4986
    test for the conditions under which the callback information
4877
 
    must be obtained.  
 
4987
    must be obtained.
4878
4988
 
4879
4989
  * Reports have been filed indicating that callbacks were
4880
4990
    being lost.  An examination of the code indicated that the
4888
4998
        cm_GetServerNoLock
4889
4999
        cm_PutServer
4890
5000
        cm_PutServerNoLock
4891
 
    this improves the ability to track the referrals.  
 
5001
    this improves the ability to track the referrals.
4892
5002
 
4893
5003
    Each cm_BeginCallbackGranting Call now allocates a reference
4894
5004
    to the cm_server_t.  The cm_EndCallbackGrantingCall either
4902
5012
    for compatibility with 64-bit systems.
4903
5013
 
4904
5014
  * fix smb_ApplyV3DirListPatches to properly apply the hidden
4905
 
     attribute to dotfiles when the infoLevel < 0x101 and 
 
5015
     attribute to dotfiles when the infoLevel < 0x101 and
4906
5016
     cm_SyncOp has failed.
4907
5017
 
4908
5018
  * Fix the Freelance registry initialization code.  There
4909
 
    was a possibility that some systems could end up with 
 
5019
    was a possibility that some systems could end up with
4910
5020
    garbage in the registry during a clean install.
4911
5021
 
4912
5022
Since 1.3.66:
4918
5028
     key.  When a change occurs mark the root.afs data as invalid and
4919
5029
     for it to be reloaded on the next access.  This allows administrators
4920
5030
     to modify the mount point list without restarting the service.
4921
 
     
 
5031
 
4922
5032
     The freelance client used to provide a fake modification time for
4923
5033
     the root.afs volume data and its mount points of 7/09/2001 14:24 EDT.
4924
5034
     Added code to extract the last modification time of the Freelance
4925
 
     registry key and use that instead.  The time now represents the 
 
5035
     registry key and use that instead.  The time now represents the
4926
5036
     most recent mount point change.
4927
5037
 
4928
 
   * PTS registration of new users to foreign cells has been added to 
 
5038
   * PTS registration of new users to foreign cells has been added to
4929
5039
     aklog.exe
4930
5040
 
4931
5041
   * Additional Cache Control and Credential Manager options have been
4932
5042
     added to the WiX installer.  See deployment guide for details.
4933
5043
 
4934
5044
   * The CachePath setting is now optionally a REG_EXPAND_SZ type
4935
 
  
4936
 
   * The WiX installer has been upgraded.  Version 2.0.1927.1 is now 
 
5045
 
 
5046
   * The WiX installer has been upgraded.  Version 2.0.1927.1 is now
4937
5047
     required.
4938
5048
 
4939
5049
   * The loopback installation code may have had a problem updating the
4945
5055
     because Windows sends 64K blocks when using overlapped writes.
4946
5056
 
4947
5057
   * The default number of server threads was increased from 4 to 25 to
4948
 
     better handle overlapped writes.  
 
5058
     better handle overlapped writes.
4949
5059
 
4950
5060
   * The "AfscredsShortcutParams" registry value was not being properly
4951
5061
     loaded by afscreds.exe.  Therefore, the default value was always being
4952
5062
     used instead of the value set by the installer.
4953
5063
 
4954
5064
   * Windows XP provides downgrade attack detection to prevent an attacker
4955
 
     from being able to force the use of NTLM simply by disrupting 
4956
 
     communication with the KDC.  This attack cannot exist between the 
 
5065
     from being able to force the use of NTLM simply by disrupting
 
5066
     communication with the KDC.  This attack cannot exist between the
4957
5067
     Windows CIFS client and the AFS Client Service.  Therefore, when a
4958
 
     downgrade has been detected the afs pioctl library will force the 
 
5068
     downgrade has been detected the afs pioctl library will force the
4959
5069
     establishment of a new CIFS connection using NTLM.
4960
 
 
 
5070
 
4961
5071
   * A locking error was discovered surrounding all references to volume
4962
 
     server lists within the cm_cell.c source file. 
 
5072
     server lists within the cm_cell.c source file.
4963
5073
 
4964
5074
   * The logged into Windows username was incorrect on Terminal Server
4965
5075
     machines.
4967
5077
   * A new registry value "NonPersistentCaching" was added to the service
4968
5078
     parameters key.  When set to a non-zero value, the afs cache is stored
4969
5079
     in the Windows paging file.  There are two limitations to choosing
4970
 
     this option: 
4971
 
        1. when persistent caching is implemented it won't work with 
 
5080
     this option:
 
5081
        1. when persistent caching is implemented it won't work with
4972
5082
           this flag set since there will be nothing to persist.
4973
5083
        2. with this flag set the initial paging allocation cannot be
4974
5084
           changed while the service is running
4981
5091
   * afs_config.exe now validates cell names against DNS in addition
4982
5092
     to the CellServDB file.
4983
5093
 
4984
 
   * In order to allow the freelance client to connect to a volume with ID 
 
5094
   * In order to allow the freelance client to connect to a volume with ID
4985
5095
     equal to 1 on the default cell we changed the fake root.afs volume ID
4986
5096
     once again.  This time we choose 0xFFFFFFFF.  In addition, we change
4987
5097
     the cell ID of the fake root.afs volume from 1 to 0xFFFFFFFF as well.
4988
 
     It will now be impossible for a volume ID to match that of another 
 
5098
     It will now be impossible for a volume ID to match that of another
4989
5099
     cell unless the client is connected to 0xFFFFFFFD cells.  That should
4990
5100
     be enough room for growth.
4991
5101
 
4996
5106
        fs mkmount \\AFS\all\<directory-name> <volume-name> <cellname>
4997
5107
 
4998
5108
     For example,
4999
 
        
 
5109
 
5000
5110
        fs mkmount \\AFS\all\openafs.org root.cell openafs.org
5001
5111
        fs mkmount \\AFS\all\.openafs.org root.cell openafs.org -rw
5002
5112
 
5003
5113
   * The algorithm used to re-attempt access to the servers associated with
5004
 
     a volume has been altered to properly address the case in which all 
 
5114
     a volume has been altered to properly address the case in which all
5005
5115
     servers have been marked down.  The previous algorithm did not reset
5006
5116
     the server's down flags so the servers were never actually retried.
5007
5117
     This caused a problem with active volumes if the network connectivity
5028
5138
     the NPLogonNotify function of the network provider. (see registry.txt
5029
5139
     for details)
5030
5140
 
5031
 
   * Added a new registry value [HKCU\SOFTWARE\OpenAFS\Client] 
5032
 
     "Authentication Cell" which may be used to specify a default 
 
5141
   * Added a new registry value [HKCU\SOFTWARE\OpenAFS\Client]
 
5142
     "Authentication Cell" which may be used to specify a default
5033
5143
     authentication cell for afscreds.exe which is different from
5034
5144
     the default cell for the AFS Client Service daemon.
5035
5145
 
5038
5148
     New registry entries added to register the dll for Winlogon events.
5039
5149
 
5040
5150
     The logoff event will now force a call to ktc_ForgetAllTokens()
5041
 
     using the context of the user being logged off as long as the 
5042
 
     user's profile is not loaded from within AFS.  If the profile 
 
5151
     using the context of the user being logged off as long as the
 
5152
     user's profile is not loaded from within AFS.  If the profile
5043
5153
     was loaded from AFS we can't release the tokens since the Logoff
5044
 
     event is triggered prior to the profile being written back to 
5045
 
     the its source location.  This is now performed in an XP SP2 
 
5154
     event is triggered prior to the profile being written back to
 
5155
     the its source location.  This is now performed in an XP SP2
5046
5156
     safe manner.
5047
5157
 
5048
5158
   * Windows XP SP2 Internet Connection Firewall interoperability
5067
5177
     kept under the registry key
5068
5178
        [HKLM\SOFTWARE\OpenAFS\Client\Freelance]
5069
5179
 
5070
 
     The data from the afs_freelance.ini file will be automatically 
 
5180
     The data from the afs_freelance.ini file will be automatically
5071
5181
     migrated to the registry on first execution of afsd_service.exe
5072
5182
 
5073
 
   * Keeping the CellServDB file in the location %WINDIR%\afsdcell.ini is 
 
5183
   * Keeping the CellServDB file in the location %WINDIR%\afsdcell.ini is
5074
5184
     troublesome for several reasons.  One, it is confusing for those who
5075
5185
     expect the file to be named "CellServDB" instead of "afsdcell.ini".
5076
 
     Two, this file is not a Windows Profile formatted file.  Three, 
 
5186
     Two, this file is not a Windows Profile formatted file.  Three,
5077
5187
     applications should not be reading or writing to %WINDIR%.  It causes
5078
5188
     problems for Windows Terminal Server.
5079
5189
 
5080
 
     The new location of CellServDB will be the OpenAFS Client install 
 
5190
     The new location of CellServDB will be the OpenAFS Client install
5081
5191
     directory which is by default C:\Program Files\OpenAFS\Client and can
5082
 
     be determined by querying the registry for 
 
5192
     be determined by querying the registry for
5083
5193
     [HKLM\SOFTWARE\TransarcCorporation\AFS Client\CurrentVersion]PathName
5084
5194
 
5085
 
     The existing afsdcell.ini will be migrated by the NSIS installer. 
 
5195
     The existing afsdcell.ini will be migrated by the NSIS installer.
5086
5196
     The Wix installer must still be updated to do the same.
5087
5197
 
5088
5198
   * Change NSIS installer to use DNS by default; to remove Integrated Logon
5089
5199
     High Security mode; and to add Terminal Services compatibility registry
5090
5200
     entries to allow the OpenAFS tools to find the afsdcell.ini and other
5091
5201
     configuration files in %WINDIR%.
5092
 
  
 
5202
 
5093
5203
   * Add support for authenticated SMB connections.   This will remove
5094
5204
     the need for high security mode in most situations.  Both NTLM
5095
5205
     and Extended Security (GSS SPNEGO) modes are supported.  Effectively,
5115
5225
     afsd_service.exe will automatically add the current Netbios Name
5116
5226
     to the BackConnectionHostNames list and then temporarily disable
5117
5227
     the loopback check for one cycle of startup/shutdown of the service.
5118
 
     We assume most folks do not start/stop without a reboot so this 
 
5228
     We assume most folks do not start/stop without a reboot so this
5119
5229
     will be adequate in most cases.
5120
5230
 
5121
5231
   * Fix security hole in afslogon.dll which allowed passwords to be
5132
5242
   * Modify the Freelance support to handle the ability
5133
5243
     to create rw mount points in the fake root.afs volume.
5134
5244
 
5135
 
   * Changed the RPC mechanism used for token setting from 
 
5245
   * Changed the RPC mechanism used for token setting from
5136
5246
     named pipes to local.  Use of named pipes can be restored
5137
5247
     by setting the environment variable AFS_RPC_PROTSEQ to
5138
 
     "ncacn_np". 
 
5248
     "ncacn_np".
5139
5249
 
5140
5250
     Named pipes were required when a Windows 9x system was
5141
5251
     using a NT system in gateway mode which is incompatible
5142
5252
     with our use of local loopback adapters.
5143
5253
 
5144
5254
   * In afscreds.exe, if a username of the form user@REALM is
5145
 
     specified and no password is specified, do not perform a 
 
5255
     specified and no password is specified, do not perform a
5146
5256
     kinit operation.  Only perform the aklog functionality.
5147
5257
 
5148
5258
   * Add a new registry value which allows the number of processors
5150
5260
     values are 1..numOfProcessors
5151
5261
 
5152
5262
       HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters
5153
 
          (DWORD) MaxCPUs 
 
5263
          (DWORD) MaxCPUs
5154
5264
 
5155
5265
Since 1.3.64:
5156
5266
   * A second MSI based installer option is now available.
5160
5270
 
5161
5271
   * Modify the Power Management Notify routine to wait for the Hard Dead
5162
5272
     timeout period instead of a fixed 19 seconds.  With the longer timeout
5163
 
     periods Hibernation and Standby could never succeed when network 
 
5273
     periods Hibernation and Standby could never succeed when network
5164
5274
     connectivity is not available.
5165
5275
 
5166
5276
   * The following fs.exe commands are now restricted to Administrator:
5168
5278
     - setcachesize
5169
5279
     - newcell
5170
5280
     - sysname with a new sysname list
5171
 
     - exportafs 
 
5281
     - exportafs
5172
5282
     - setcell
5173
5283
     - setserverprefs
5174
5284
     - storebehind
5200
5310
     SMB timeout in Windows is a dynamic value computed based upon
5201
5311
     a fixed minimum timeout to which is added time based upon the
5202
5312
     size of the request and the performance characteristics of
5203
 
     the connection.  Second, it is the responsibility of the 
 
5313
     the connection.  Second, it is the responsibility of the
5204
5314
     SMB Server to enforce the timeout requirements of the client.
5205
5315
     This is untrue.  The SMB Server cannot be expected to know
5206
 
     the requirements of the client.  More importantly, if the 
 
5316
     the requirements of the client.  More importantly, if the
5207
5317
     SMB server uses the SMB client timeout as a value to restrict
5208
5318
     its behavior as an RX client, the performance characteristics
5209
5319
     of the local SMB session would be used to prematurely terminate
5210
 
     WAN connections with significantly different performance 
 
5320
     WAN connections with significantly different performance
5211
5321
     characteristics.
5212
5322
 
5213
5323
     The timeout logic has therefore been modified in the following
5214
5324
     manner:
5215
5325
      . the Lan Manager Workstation (SMB) Session Timeout is used only
5216
 
        as a basis for configuring the Connection Dead Timeout 
 
5326
        as a basis for configuring the Connection Dead Timeout
5217
5327
        and Hard Dead Timeout values.  The Connection Dead Timeout
5218
5328
        must be at least 15 seconds longer than the SMB Timeout
5219
 
        and the Hard Dead Timeout must be at least double the 
 
5329
        and the Hard Dead Timeout must be at least double the
5220
5330
        Connection Dead Timeout.
5221
5331
      . New registry entries have been added to allow the Connection
5222
5332
        Dead Timeout and Hard Dead Timeout values independent of the
5223
5333
        Lan Manager Workstation Session Timeout
5224
5334
      . The test to enforce the SMB Client Timeout has been removed.
5225
 
        
5226
 
     One of the side-effects of removing the enforcement of the SMB 
 
5335
 
 
5336
     One of the side-effects of removing the enforcement of the SMB
5227
5337
     Client Timeout is that regardless of whether or not the SMB client
5228
5338
     is available to receive the response (and how would the SMB server
5229
 
     know) the RX protocol response can be used to update the AFS 
5230
 
     Client Service state for ready access by future SMB client 
 
5339
     know) the RX protocol response can be used to update the AFS
 
5340
     Client Service state for ready access by future SMB client
5231
5341
     requests.
5232
5342
 
5233
5343
     This should be the end of the "Server paused or restarting messages"
5234
 
   
 
5344
 
5235
5345
   * Add support for arbitrary UNC paths to the pioctl() support.
5236
5346
     This enables the fs commands as well as the AFS Shell Extension
5237
5347
     to work correctly when UNC paths are being used.
5241
5351
 
5242
5352
   * Add debug info to test whether CM_BUF_WAITING or CM_SCACHE_WAITING
5243
5353
     are ever set more than once at a time
5244
 
 
5245
 
   * Fix the management of lists of cm_cell_t structures when using 
 
5354
 
 
5355
   * Fix the management of lists of cm_cell_t structures when using
5246
5356
     DNS to lookup cell information.  The previous code would fail to
5247
5357
     reuse the same cellID for a cell if DNS was used more than once
5248
5358
     for a given cell name.  When the ttl expired, a single cm_cell_t
5249
 
     could be inserted into the cm_allCellsp list more than once 
 
5359
     could be inserted into the cm_allCellsp list more than once
5250
5360
     producing a loop.  In addition, the vlServerp list belonging to
5251
5361
     the cell was not freed resulting in improper refCounting of the
5252
5362
     servers.
5255
5365
     the CellServDB file
5256
5366
 
5257
5367
   * Add cm_FreeServer() function and call it from cm_FreeServerList()
5258
 
     to properly garbage collect cm_server_t objects 
5259
 
     
5260
 
   * Add numVCs variable to smb.c to track the number of smb_vc_t 
5261
 
     objects created and use it to initialize the vcID field which 
5262
 
     previously was set to 0 in all objects resulting in FindByID 
 
5368
     to properly garbage collect cm_server_t objects
 
5369
 
 
5370
   * Add numVCs variable to smb.c to track the number of smb_vc_t
 
5371
     objects created and use it to initialize the vcID field which
 
5372
     previously was set to 0 in all objects resulting in FindByID
5263
5373
     collisions.
5264
5374
 
5265
5375
   * Fixed DNS lookups to work consistently throughout the OpenAFS
5281
5391
 
5282
5392
   * Fixed an assertion validating the number of allocated NCBs
5283
5393
 
5284
 
   * Fixed the build environment to consistently build for 
 
5394
   * Fixed the build environment to consistently build for
5285
5395
     Windows 2000 and above.  (APPVER = 5.0)
5286
5396
 
5287
5397
   * Fixed rx_debug to properly validate the receipt in incoming
5289
5399
     the socket buffer unless success is indicated.
5290
5400
 
5291
5401
Since 1.3.63:
5292
 
   * afsd_service.exe will now display a message box to the 
 
5402
   * afsd_service.exe will now display a message box to the
5293
5403
     desktop when it terminates due to an IP Address Change.
5294
 
  
 
5404
 
5295
5405
   * installer no longer deletes AFS Server configuration data
5296
5406
     on uninstall
5297
5407
 
5298
 
   * installer generates a warning dialog if the RPC service 
 
5408
   * installer generates a warning dialog if the RPC service
5299
5409
     is not properly configured
5300
5410
 
5301
5411
   * installer compressed with lzma instead of bzip2
5302
5412
 
5303
5413
   * afsd_service.exe shutdown crash solved once and for all
5304
 
 
 
5414
 
5305
5415
   * reference counting of smb_vc_t data structures improved
5306
 
 
 
5416
 
5307
5417
   * name space collision of smb_fid_t event objects corrected
5308
5418
 
5309
 
   * the output of "fs memdump" is now written to 
 
5419
   * the output of "fs memdump" is now written to
5310
5420
     %WINDIR%\TEMP\afsd_alloc.log
5311
5421
 
5312
5422
   * the file TaAfsApp_1033.dll is now properly installed allowing
5313
5423
     the User Manager to start
5314
 
  
 
5424
 
5315
5425
   * a new algorithm is used for computing filename pattern matches
5316
5426
 
5317
5427
   * afscreds.exe now accepts user names containing instance
5320
5430
   * Fix the Directory Name Lookup Cache to be case-sensitive.
5321
5431
     This is crucial in environments in which a Windows client
5322
5432
     is accessing a directory with more than one filename that
5323
 
     differs only by case.  If the directory contains "FOO" 
 
5433
     differs only by case.  If the directory contains "FOO"
5324
5434
     and "Foo".  You want "DEL Foo" to delete the correct one.
5325
5435
     We still have a problem in that "DEL foo" will delete a
5326
5436
     random filename.  This will be addressed in a future release.
5330
5440
     flag in afsdsbmt.ini when a drive mapping is removed.
5331
5441
 
5332
5442
   * Updates to NSIS installer script.  AFS Server configuration
5333
 
     data will not be destroyed on un-install or re-install.  
 
5443
     data will not be destroyed on un-install or re-install.
5334
5444
     Use a better compression algorithm.
5335
 
   
 
5445
 
5336
5446
   * afslogon.dll now uses KFW to obtain tokens when available
5337
 
   
 
5447
 
5338
5448
   * afslogon.dll when given an all uppercase username will
5339
5449
     attempt to authenticate with both the uppercase name
5340
5450
     and an all lowercase variation
5342
5452
   * DST modification removed.  The fix appears to make things
5343
5453
     worse after a reboot of the machine.
5344
5454
 
5345
 
   * fs.exe:  added "cscpolicy" which is used to 
 
5455
   * fs.exe:  added "cscpolicy" which is used to
5346
5456
     change client side caching policy for AFS shares
5347
5457
 
5348
 
     Usage: fs cscpolicy [-share <AFS share>] [-manual] [-programs] 
 
5458
     Usage: fs cscpolicy [-share <AFS share>] [-manual] [-programs]
5349
5459
                         [-documents] [-disable] [-help]
5350
5460
 
5351
5461
   * Several uninitialized variables have been initialized
5357
5467
        password:  xxxxxxxx
5358
5468
     Will obtain a cross realm ticket for jaltman/DEMENTIA.ORG@ATHENA.MIT.EDU
5359
5469
     will will in turn be used to obtain afs@DEMENTIA.ORG.
5360
 
     The resulting token will be stored with the display name 
 
5470
     The resulting token will be stored with the display name
5361
5471
       jaltman@ATHENA.MIT.EDU@dementia.org
5362
5472
 
5363
5473
   * aklog.exe has been added to the client
5364
5474
 
5365
 
     Usage: aklog [-d] [[-cell | -c] cell [-k krb_realm]] 
 
5475
     Usage: aklog [-d] [[-cell | -c] cell [-k krb_realm]]
5366
5476
                  [[-p | -path] pathname]
5367
5477
                  [-noprdb] [-force]
5368
5478
                  [-5 | -4]
5396
5506
     as the source of the AFS authentication.  The use of up to 12,000 byte
5397
5507
     tickets will allow tickets produced by all versions of Microsoft
5398
5508
     Active Directory to be used.
5399
 
      - create a user account.       
 
5509
      - create a user account.
5400
5510
      - designate it DES only
5401
5511
      - disable pre-auth
5402
5512
      - specify its UPN to be  "afs@realm"
5404
5514
 
5405
5515
   * Do not enforce the funky 8dot3 pattern matching rule that the first "."
5406
5516
     is special when using long file names.  (you must use "*.*" and not "*")
5407
 
     Instead only enforce it when performing 8dot3 searches. 
 
5517
     Instead only enforce it when performing 8dot3 searches.
5408
5518
 
5409
5519
   * Fixed the DST problem with creation times being set one hour ahead
5410
5520
 
5411
 
   * Fixed the problem when using \\afs\cell-alias.  For example, 
 
5521
   * Fixed the problem when using \\afs\cell-alias.  For example,
5412
5522
     \\afs\uncc instead of \\afs\uncc.edu.  Do not a new cell struct
5413
5523
     for the alias name; instead simply expand the name.  One of the
5414
5524
     symptoms of this problem was a loss of acquired tokens.
5415
5525
 
5416
 
   * Fixed the AFS Shell Extension.  The Symbolic Link menu was empty 
 
5526
   * Fixed the AFS Shell Extension.  The Symbolic Link menu was empty
5417
5527
     of strings.  (Only English strings provided.)
5418
5528
 
5419
 
   * Fixed the installer to properly replace in use files.  
 
5529
   * Fixed the installer to properly replace in use files.
5420
5530
 
5421
5531
   * Fixed the build system to cleanup generated component version files
5422
5532
 
5423
 
   * The release build compiled with MSVC 6.0 compiler to avoid the 
 
5533
   * The release build compiled with MSVC 6.0 compiler to avoid the
5424
5534
     afsd_service.exe shutdown crash.  This does not solve the problem
5425
5535
     but simply avoids it for the time being.
5426
5536
 
5427
5537
Since 1.3.61:
5428
5538
 
5429
5539
 * fix afslogon.dll to not corrupt memory when High Security mode
5430
 
   is not used.  
 
5540
   is not used.
5431
5541
 
5432
5542
 * fix afsd_service.exe to not attempt to restore the stack when
5433
5543
   an exception occurs.  (not safe in multi-threaded programs)
5434
5544
 
5435
5545
 * fix uninstaller to properly remove the CRT and MFC DLLs
5436
 
 
 
5546
 
5437
5547
 * remove a Message Box from afscreds.exe when getcellconfig()
5438
5548
   fails on a kerberos realm which is not a cell
5439
5549
 
5452
5562
 * fix the intermittent crash of the power management thread when
5453
5563
   shutting down the AFS Client Service
5454
5564
 
5455
 
 * optimizes the obtain drive mount list functionality which is 
 
5565
 * optimizes the obtain drive mount list functionality which is
5456
5566
   executed every time the mount tab in afscreds.exe and afs_config.exe
5457
5567
   are refreshed.  (this happens a lot)
5458
5568
 
5463
5573
The following is a list of changes to the OpenAFS for Window client
5464
5574
since 1.2.10.
5465
5575
 
5466
 
* flexelint was run against the source tree and hundreds (perhaps 
5467
 
  thousands) of corrections were applied to ensure prototypes 
5468
 
  were in use; types were used consistently; variables were 
 
5576
* flexelint was run against the source tree and hundreds (perhaps
 
5577
  thousands) of corrections were applied to ensure prototypes
 
5578
  were in use; types were used consistently; variables were
5469
5579
  initialized; unused variables were removed; etc.
5470
5580
 
5471
 
* A wide variety of instrumentation was added including the 
 
5581
* A wide variety of instrumentation was added including the
5472
5582
  ability to produce a stack trace from within afsd_service.exe
5473
5583
  when it crashes.
5474
5584
 
5475
5585
* Dynamic configuration of the RDRtimeout value based upon the
5476
5586
  LanMan Workstation Session Timeout
5477
5587
 
5478
 
* The mount root no longer needs to be called "/afs".  This 
 
5588
* The mount root no longer needs to be called "/afs".  This
5479
5589
  is now set by a registry value "MountRoot" within the key
5480
5590
  HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
5481
5591
 
5484
5594
 
5485
5595
* Thread synchronization was added to cm_server.c and ktc_nt.c
5486
5596
 
5487
 
* All calls to GlobalAlloc()/GlobalFree() were replaced with 
 
5597
* All calls to GlobalAlloc()/GlobalFree() were replaced with
5488
5598
  calloc()/free().  The Global functions were needed on Windows 3.x
5489
5599
  but have caused a variety of problems on the Win32 platforms.
5490
 
  Avoiding them is highly recommended by several Microsoft 
 
5600
  Avoiding them is highly recommended by several Microsoft
5491
5601
  Knowledgebase articles
5492
5602
 
5493
5603
* Support for Symbolic Links added to the AFS Shell Extension
5494
5604
 
5495
5605
* Added a registry value "OverlayEnabled" to determine if
5496
 
  Shell Extension Overlays should be enabled.  
 
5606
  Shell Extension Overlays should be enabled.
5497
5607
  HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
5498
5608
 
5499
5609
* New Build system to support VC6, VC.NET, VC.NET2003 compilers and
5501
5611
  a custom directory src\WINNT\extra which can be used as a grafting
5502
5612
  location of organization specific additions to the build tree.
5503
5613
 
5504
 
* New installer built using NSIS 2.0.  
 
5614
* New installer built using NSIS 2.0.
5505
5615
 
5506
5616
* Named all kernel objects in order to allow them to be monitored
5507
5617
  with tools such as SysInternals' ProcExp.exe.
5508
 
  
 
5618
 
5509
5619
* Introduced new EventLog framework for AFSD
5510
5620
 
5511
 
* Introduced Power Management interface to AFSD for Standby and 
 
5621
* Introduced Power Management interface to AFSD for Standby and
5512
5622
  Hibernate modes to allow cache to be flushed prior to network
5513
5623
  disconnect
5514
5624
 
5515
 
* Utilize Win32 DNSQuery API instead of internal routines.  This 
5516
 
  allows DNS SRV queries to be sent to all current domain name 
 
5625
* Utilize Win32 DNSQuery API instead of internal routines.  This
 
5626
  allows DNS SRV queries to be sent to all current domain name
5517
5627
  servers.  Not just one specified in an INI file.  DNS is now
5518
5628
  always activated.
5519
5629
 
5520
5630
* "NetbiosName" registry value may be used to specify a fixed
5521
5631
  Netbios Name such as "AFS" to be used instead of "HOSTNAME-AFS"
5522
 
  when the loopback adapter is in use.  If you need to use the 
 
5632
  when the loopback adapter is in use.  If you need to use the
5523
5633
  old notation with a loopback adapter installed specify a registry
5524
 
  entry of 
 
5634
  entry of
5525
5635
 
5526
5636
     "NetbiosName" REG_EXPAND_SZ = "%COMPUTERNAME%-AFS"
5527
5637
 
5533
5643
  by the "TEMP" environment variable.  This is usually %WINDIR%\TEMP
5534
5644
  for services.  Added the Date to the log entries.
5535
5645
 
5536
 
* New registry value "RxMaxMTU" used to limit the size of the RX 
 
5646
* New registry value "RxMaxMTU" used to limit the size of the RX
5537
5647
  packets sent by the AFS Client Service to the Server.  In order
5538
5648
  to enable OpenAFS to work across the Cisco IPSec VPN the packet
5539
5649
  size must be restricted to 1264 or smaller.  The latest NSIS
5560
5670
* New registry value "AllSubmount" allows the "all" submount to
5561
5671
  be disabled by setting its value to 0x00.
5562
5672
 
5563
 
* Allow cells names to be valid mount points 
 
5673
* Allow cells names to be valid mount points
5564
5674
    \\<netbiosName>\<cellname>
5565
5675
 
5566
5676
* Store the active state of drive mappings in order for afscreds.exe
5581
5691
    -N = ip address change detection
5582
5692
    -Z = unmap drives
5583
5693
 
5584
 
* New registry value "EnableKFW" in {HKCU,HKLM}SOFTWARE\OpenAFS\Client 
 
5694
* New registry value "EnableKFW" in {HKCU,HKLM}SOFTWARE\OpenAFS\Client
5585
5695
  determines whether or not MIT Kerberos for Windows should be used
5586
5696
  to obtain tokens via Kerberos 5 tickets.
5587
5697
 
5588
 
* New registry value "AfscredsShortcutParams" in 
5589
 
  {HKCU,HKLM}SOFTWARE\OpenAFS\Client 
 
5698
* New registry value "AfscredsShortcutParams" in
 
5699
  {HKCU,HKLM}SOFTWARE\OpenAFS\Client
5590
5700
  determines the command line parameters to be specified when "fixing"
5591
5701
  the AFS Shortcut in the user's startup folder.
5592
5702
 
5593
 
* The "ShowTrayIcon" registry value has been moved from 
 
5703
* The "ShowTrayIcon" registry value has been moved from
5594
5704
  HKLM\Software\TransarcCorporation\AFS Client\AfsCreds to
5595
 
  {HKCU,HKLM}SOFTWARE\OpenAFS\Client 
5596
 
  
 
5705
  {HKCU,HKLM}SOFTWARE\OpenAFS\Client
 
5706
 
5597
5707
* The <cell name> registry values used to store the token expiration
5598
 
  reminders have been moved from 
 
5708
  reminders have been moved from
5599
5709
  HKLM\Software\TransarcCorporation\AFS Client\AfsCreds to
5600
5710
  {HKCU,HKLM}SOFTWARE\OpenAFS\Client\Reminders
5601
 
 
 
5711
 
5602
5712
* Obtain the Logon User Name from the Explorer key when available
5603
5713
 
5604
5714
* new text document doc\txt\winnotes\registry.txt lists all registry
5605
5715
  values used by OpenAFS (excluding the AFS Server)
5606
5716
 
5607
 
* BUG: rx_securityClass objects were not properly reference 
5608
 
  counted and were never freed.  
 
5717
* BUG: rx_securityClass objects were not properly reference
 
5718
  counted and were never freed.
5609
5719
 
5610
5720
* BUG: reduce the number of conditions under which CM_ERROR_TIMEOUT
5611
5721
  would be generated.  The existence of a server does not imply
5625
5735
  which were utilized above the limit could never have event completions
5626
5736
  detected.
5627
5737
 
5628
 
* BUG: smb_username_t objects were not being reference counted and 
 
5738
* BUG: smb_username_t objects were not being reference counted and
5629
5739
  were not properly freed.
5630
5740
 
5631
5741
* BUG: smb_tid_t objects could under unusual circumstances be freed
5632
5742
  before they were no longer referenced.
5633
5743
 
5634
 
* BUG: smb_fid_t object pointer were frequently used even when 
 
5744
* BUG: smb_fid_t object pointer were frequently used even when
5635
5745
  their value could be NULL.   They were not properly released and
5636
5746
  therefore they were never freed.
5637
5747
 
5640
5750
 
5641
5751
* BUG: when Rx produces a CM_ERROR_NOIPC error do not return "Access
5642
5752
  Denied" because that causes the Explorer Shell to try again until
5643
 
  access is obtained.  Instead return "Remote Resources" which allows 
 
5753
  access is obtained.  Instead return "Remote Resources" which allows
5644
5754
  the shell to move on and treat the error as transient.
5645
5755
 
5646
5756
* BUG: when initializing the NCBreturns structure, separate Event objects
5650
5760
* BUG: smb_dirSearch_t objects were not being properly referenced counted
5651
5761
  or freed.
5652
5762
 
5653
 
* BUG: smb_tran2Packet_t objects were not being properly referenced 
 
5763
* BUG: smb_tran2Packet_t objects were not being properly referenced
5654
5764
  counted or freed.
5655
5765
 
5656
5766
* BUG: directory path creation did not handle the case of multiple
5659
5769
* BUG: SMB requests which required an Extended Response were ignored.
5660
5770
  This prevented some files from being written to AFS volumes.
5661
5771
 
5662
 
* BUG: character strings were being freed even after they were 
 
5772
* BUG: character strings were being freed even after they were
5663
5773
  inserted into in use data structures
5664
5774
 
5665
5775
* BUG: inconsistent usernames were used when High Security mode was
5669
5779
  susceptible to race conditions when performed by multiple processes
5670
5780
 
5671
5781
* BUG: memory allocation and deallocation crossed instances of the
5672
 
  C Runtime Library producing memory leakage and corruption in 
 
5782
  C Runtime Library producing memory leakage and corruption in
5673
5783
  afscreds and the client configurator.
5674
5784
 
5675
5785