1
Since 1.6.0102 (1.6.1pre3)
3
* Workaround Win7 SMB Reconnect Bug
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
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.
21
There were no 1.6.1pre1 and pre2 builds for the Windows platform.
23
Since 1.6.0002 (1.6.0b)
25
* Mount point strings always have a trailing dot
27
* Fix "fs setserverprefs" processing in the
28
service for VLDB preferences.
30
* Improved behavior when a volume group is renamed.
32
* The test for whether a volume group name is numeric
35
* Permit offline volume check to be disabled.
37
* Do not fail a rename due to an EEXIST error if the
38
name is an exact match.
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.
45
* Vista/Win7 advanced firewall support
47
* Avoid duplicate volume update queries.
49
* TransarcAFSDaemon\NetworkProvider "Debug"
50
Set to one to debug network provider. Use instead
53
* Add version info to Startup Event log message.
55
* When storing a chunk to the file server, start with
56
the first known dirty buffer. Do not search backwards.
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.
64
* Permit longer cellnames in Wix installer.
66
* Only permit NAT pings on the one and only root user connection.
68
* Close a memory leak when processing set token requests.
70
* terminate HOSTS/LMHOSTS with newline
72
* kauth search for kerberos iv port first
74
* The CRT allocator cannot be used for memory that will be freed
75
by afsrpc.dll. Use xdr_alloc() instead.
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.
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.
86
* cm_buf refcnt must hold buf_globalLock
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.
93
* VIOC_GETUNIXMODE pioctl should execute smb_IoctlGetUnixMode not
96
* improved idle dead time handling
98
* failover and retry for VBUSY
100
Since 1.6.0001 (1.6.0a)
102
* Permit NPLogonNotify to exit if the service
103
is not responding to pioctl requests.
105
* Correct the CheckOfflineVolumeState logic
107
Since 1.6.0000 (1.6.0)
109
* Avoid server refcount leak
1
111
Since 1.5.9907 (1.6pre7)
3
113
* Add Shutdown message to the windows event log
934
1044
* Avoid contacting the file server in order to allocate
935
1045
an empty buffer beyond the current length of the file.
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.
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
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".
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.
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.
959
1069
* Add pioctl data validation to the AFS Explorer Shell extension.
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.
966
1076
* An uninitialized variable was present in the symlink
967
1077
recursion detection loop.
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.
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.
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
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.
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}.
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.
995
* Fix Explorer Shell "invalid parameter" bug introduced
1105
* Fix Explorer Shell "invalid parameter" bug introduced
998
1108
* Log RXKAD errors to the trace log.
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.
1003
* Prevent simultaneous pioctl calls from crashing the
1113
* Prevent simultaneous pioctl calls from crashing the
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.
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.
1045
1155
loops. Doing so can result in an access to memory that has
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.
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.
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.
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).
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.
1070
1180
* Fix "fs newcell" which was broken in 1.5.60.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
1135
* During a shutdown short circuit the offline volume check daemon
1245
* During a shutdown short circuit the offline volume check daemon
1138
1248
* Properly track link counts during cm_Link and cm_Unlink operations.
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.
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.
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.
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.
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.
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.
1160
1270
* Perform offline volume checks in most recently used order.
1162
1272
* Prevent crash when a data version for a cache object goes backwards.
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)
1167
1277
* fs listquota fixed to permit large quota sizes to be displayed.
1169
1279
* rx packet resend and data packets sent counts were incorrect.
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.
1174
1284
* Microsoft SMB Redirector (mrxsmb.sys) support for ExtendedSessTimeout
1181
1291
in an unexpected panic while freeing the Rx call iovq.
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>).
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.)
1195
* The BackConnectionHostNames registry value configuration was broken
1305
* The BackConnectionHostNames registry value configuration was broken
1196
1306
when dynamic re-establishment of Netbios Name registrations was added.
1199
1309
* Hidden vos commands are revealed.
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.
1204
* Reorganize code that prevents multiple Store operations to the same
1314
* Reorganize code that prevents multiple Store operations to the same
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.
1210
1320
* Fix vos commands that output 64-bit integer values.
1212
1322
* Cygwin Import Libraries are provided in the SDK for all OpenAFS DLLs.
1213
Permits building cygwin applications against OpenAFS libraries.
1215
* OpenAFS Release Notes, Administrator Guide and User Guide now installed
1216
as Windows HTML Help (.CHM) files.
1218
* NSIS installer does a much better job of cleaning up files left
1323
Permits building cygwin applications against OpenAFS libraries.
1325
* OpenAFS Release Notes, Administrator Guide and User Guide now installed
1326
as Windows HTML Help (.CHM) files.
1328
* NSIS installer does a much better job of cleaning up files left
1219
1329
over from previous installs.
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.
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.
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.
1233
1343
The registry schema is as follows:
1287
1397
afsrpc.dll now implements and exports xdr_free().
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.
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
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.
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.
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.
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.
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.
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
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
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.
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".
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.
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.
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.
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.
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.
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.
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".
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.
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
1380
* Remove symlink recursion tests and increase max symlink count
1490
* Remove symlink recursion tests and increase max symlink count
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
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.
1488
* Increased logging to afsd_init.log of netbios name
1598
* Increased logging to afsd_init.log of netbios name
1489
1599
related errors.
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.
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
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.
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
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.
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.
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.
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.
1526
1636
* Protect against invalid IP address values in CellServDB
1616
1726
the DLL load process.
1618
1728
* When reporting the Volume Name "AFS" do not include the terminating
1619
NUL in the reported length.
1729
NUL in the reported length.
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.
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.
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.
1635
1745
* Rx Jumbograms are now off by default. To re-enable, add "RxJumbo" = "1"
1636
1746
in the TransarcAFSDeamon/Parameters key.
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.
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
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.
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.
1659
1769
* Add resource version info to xstat_fs_test and xstat_cm_test
1661
* Fix a delete vs delete[] usage problem in the WiX custom
1771
* Fix a delete vs delete[] usage problem in the WiX custom
1664
* When creating a mount point, validate the volume name to
1774
* When creating a mount point, validate the volume name to
1665
1775
make sure it exists.
1667
* When processing a mount point, pay attention to VL_BADNAME
1777
* When processing a mount point, pay attention to VL_BADNAME
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
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.
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.
1680
1790
* Add routines for debugging smb refcount errors.
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.
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.
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
1697
1807
* Enable bos restricted operations
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.
1702
* Avoid repeated retries when attempting to obtain access rights.
1703
If the access rights were obtained successfully but do not
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.
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
1710
1820
* Fix a short name truncation bug.
1712
* Fix a heap corruption error when reading the CellServDB file
1822
* Fix a heap corruption error when reading the CellServDB file
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.
1718
1828
* Fix several tracking issues for cm_scache_t rw locks.
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
1847
1957
* Update CellServDB file to GCO Public 23 Apr 2008
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()
1853
1963
* Prevent udebug from crashing.
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.
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.
1863
1973
* Improved performance on high latency links.
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.
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.
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.
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.
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.
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.
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.
1891
2001
* 32-bit installers are now built with Visual Studio 2005
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.
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.
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.
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.
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
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.
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.
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
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.
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.
1932
2042
* Fixes error handling in cm_NTCheckDelete()
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.
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.
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
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.
1947
2057
* Reduce contention between BkgDaemon threads
1949
* Prevent CM_SCACHEFLAG_ASYNCSTORE from being reset on a write
2059
* Prevent CM_SCACHEFLAG_ASYNCSTORE from being reset on a write
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.
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.)
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.
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.
1970
* Change the defaults for RxEnablePeerStats and RxEnableProcessStats
2080
* Change the defaults for RxEnablePeerStats and RxEnableProcessStats
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.
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.
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.
1988
2098
These statistics are not stored in the cache file.
1990
2100
* Fix windows event logging broken in 1.5.33.
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.
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.)
2000
2110
* Modify installers the set RxMaxMTU to 0.
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
2006
2116
* Increase default number of Background Daemons to 4.
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.
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.
2018
2128
* Windows Error Reporting has shown crashes in aklog as a result
2191
2301
* The path ioctl operations have several issues:
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.
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
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.
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
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.
2221
2331
The fid field permits a fid to be specified.
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
2226
* A new "-literal" option is available for "fs examine, flush, whereis,
2336
* A new "-literal" option is available for "fs examine, flush, whereis,
2229
2339
* Unimplemented fs commands have been removed.
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
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.
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.
2243
2353
* Cell names are published as share names. As a result they are searched
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)
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.
2403
2513
* Ensure that the cm_server_t refCount is safely modified.
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().
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
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.
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.
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.
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.
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
2437
* a couple of .readonly Volume Callback optimizations were
2547
* a couple of .readonly Volume Callback optimizations were
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.]
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.
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.
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.
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.
2462
2572
* Correct a double free condition in the NIM AFS credentials provider.
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.
2472
2582
* Add Stack Frame logging for AMD64
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.
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.
2481
2591
* Update CellServDB to GCO Public 25 Oct 2007
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.
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.
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.
2501
2611
* For consistency replace all calls to findKey in which the range i
2502
2612
s (1,numentries) with calls to getSlot().
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.
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
2512
2622
(1) be optimistic for the most common case so it will be fast
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.
2519
2629
(3) Ensure that all operations take place with the correct locks.
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.
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.
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.
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.
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.
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.
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.
2550
2660
* assert that the cm_scache_t mutex is held when calling
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.
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
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:
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
2829
2939
- all of the directory buffers necessary to make the change
2830
2940
are present in the cache
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.
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.
2842
2952
* dirty buffers only have their dirty bytes stored to the file
2843
2953
server instead of the entire chunksize
2845
2955
* the default chunksize has been increased from 128KB to 1MB
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_)
2853
* added a srv_deleted state for cm_serverRef_t objects. This
2854
state is set when cm_FreeServerList() is called with the
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.
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
2868
* added a state field to the cm_volume_t object (enum volstate
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
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
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
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
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.
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.
2900
* Modified cm_GetVolumeByName to ensure that only one cm_volume_t is
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
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.
2913
* modified cm_GetVolumeByName() to initialize the state of a
2914
volume to vl_unknown. The actual state will be set when a
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.
2917
3027
* changed name of scache hash table variables to avoid ambiguity
2918
3028
when adding hash tables for volumes
2920
3030
* fix a buffer overrun in sys\pioctl_nt.c pioctl().
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.
2930
* Added four hash tables for cm_volume_t objects to improve the
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.
3048
RO or RW ID depending upon the existence of RO volume instances.
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.
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
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.
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.
3067
volume is updated. The default period is 600 seconds. This can
3068
be configured with the BusyVolumeCheckInterval registry value.
2960
3070
* Added prototype for smb_IoctlPrepareRead() which was missing a
2961
3071
return type in the function definition.
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
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.
2973
* In cm_Analyze, when VNOVOL or VMOVED are received,
2974
call cm_ForceVolumeUpdate() to force a refresh of the volume
3083
* In cm_Analyze, when VNOVOL or VMOVED are received,
3084
call cm_ForceVolumeUpdate() to force a refresh of the volume
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.
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.
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.
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.
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
3001
* renamed cm_CheckBusyVolumes to cm_CheckOfflineVolumes.
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.
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
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.
3017
3127
* fix the volume status reported by "fs examine"
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.
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
3031
3141
* Dump more data with "fs memdump". All volumes and scaches and
3034
3144
* Reverse the order of the all cells list. This ensures that
3035
3145
the workstation cell is always first in the list.
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.
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
3045
* no longer treat VMWare network adapters as equivalent to a
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
3050
3160
* Use read locks whenever possible instead of write locks when
3051
3161
walking the allCellsp list. This permits better use of multiple
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.
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.
3067
* Fix a race condition in the SMB FID cleanup code that could
3177
* Fix a race condition in the SMB FID cleanup code that could
3068
3178
result in a stat cache mutex never being released.
3070
* Fix the graphics files that are installed as part of the
3180
* Fix the graphics files that are installed as part of the
3071
3181
IBM Administrators Guide.
3073
* Change the behavior of pioctl path parsing to not follow
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
3079
3189
* Enable AFSDB record lookup for command line tools such as
4392
4502
* Updated CellServDB to Public CellServDB 16 Mar 2005
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.
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.
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.
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.
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.
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.
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.
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.