extern int RXAFSCB_ExecuteRequest(struct rx_call *z_call);
extern int RXSTATS_ExecuteRequest(struct rx_call *z_call);
-extern afs_int32 cryptall;
+extern afs_uint32 cryptall;
+extern afs_uint32 cm_anonvldb;
extern int cm_enableServerLocks;
extern int cm_followBackupPath;
extern int cm_deleteReadOnly;
DWORD cm_mountRootLen;
int cm_logChunkSize;
int cm_chunkSize;
-#ifdef AFS_FREELANCE_CLIENT
-char *cm_FakeRootDir;
-#endif /* freelance */
int smb_UseV3 = 1;
char cm_NetbiosName[MAX_NB_NAME_LENGTH] = "";
char cm_CachePath[MAX_PATH];
-DWORD cm_CachePathLen;
DWORD cm_ValidateCache = 1;
BOOL reportSessionStartups = FALSE;
(pName - pHostNames < dwSize) && *pName ;
pName += strlen(pName) + 1)
{
- if ( !stricmp(pName, cm_NetbiosName) ) {
+ if ( !cm_stricmp_utf8(pName, cm_NetbiosName) ) {
bNameFound = TRUE;
break;
}
DWORD blockSize;
long logChunkSize;
DWORD stats;
+ DWORD volumes;
+ DWORD cells;
DWORD dwValue;
- DWORD rx_enable_peer_stats = 0;
- DWORD rx_enable_process_stats = 0;
+ DWORD rx_enable_peer_stats;
+ DWORD rx_enable_process_stats;
long traceBufSize;
long maxcpus;
long ltt, ltto;
code = RegQueryValueEx(parmKey, "Stats", NULL, NULL,
(BYTE *) &stats, &dummyLen);
if (code == ERROR_SUCCESS)
- afsi_log("Status cache size %d", stats);
+ afsi_log("Status cache entries: %d", stats);
else {
stats = CM_CONFIGDEFAULT_STATS;
- afsi_log("Default status cache size %d", stats);
+ afsi_log("Default status cache entries: %d", stats);
+ }
+
+ dummyLen = sizeof(volumes);
+ code = RegQueryValueEx(parmKey, "Volumes", NULL, NULL,
+ (BYTE *) &volumes, &dummyLen);
+ if (code == ERROR_SUCCESS)
+ afsi_log("Volumes cache entries: %d", volumes);
+ else {
+ volumes = CM_CONFIGDEFAULT_STATS / 3;
+ afsi_log("Default volume cache entries: %d", volumes);
+ }
+
+ dummyLen = sizeof(cells);
+ code = RegQueryValueEx(parmKey, "Cells", NULL, NULL,
+ (BYTE *) &cells, &dummyLen);
+ if (code == ERROR_SUCCESS)
+ afsi_log("Cell cache entries: %d", cells);
+ else {
+ cells = CM_CONFIGDEFAULT_CELLS;
+ afsi_log("Default cell cache entries: %d", cells);
}
dummyLen = sizeof(ltt);
else
LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_CRYPT_OFF);
+ dummyLen = sizeof(cryptall);
+ code = RegQueryValueEx(parmKey, "ForceAnonVLDB", NULL, NULL,
+ (BYTE *) &cm_anonvldb, &dummyLen);
+ afsi_log("CM ForceAnonVLDB is %s", cm_anonvldb ? "on" : "off");
+
#ifdef AFS_AFSDB_ENV
dummyLen = sizeof(cm_dnsEnabled);
code = RegQueryValueEx(parmKey, "UseDNS", NULL, NULL,
}
#endif /* AFS_FREELANCE_CLIENT */
+ dummyLen = sizeof(smb_UseUnicode);
+ code = RegQueryValueEx(parmKey, "NegotiateUnicode", NULL, NULL,
+ (BYTE *) &smb_UseUnicode, &dummyLen);
+ if (code != ERROR_SUCCESS) {
+ smb_UseUnicode = 1; /* default on */
+ }
+ afsi_log("SMB Server Unicode Support is %s",
+ smb_UseUnicode ? "enabled" : "disabled");
+
dummyLen = sizeof(smb_hideDotFiles);
code = RegQueryValueEx(parmKey, "HideDotFiles", NULL, NULL,
(BYTE *) &smb_hideDotFiles, &dummyLen);
if (rx_nojumbo)
afsi_log("RX Jumbograms are disabled");
+ dummyLen = sizeof(rx_extraPackets);
+ code = RegQueryValueEx(parmKey, "RxExtraPackets", NULL, NULL,
+ (BYTE *) &rx_extraPackets, &dummyLen);
+ if (code != ERROR_SUCCESS) {
+ rx_extraPackets = 120;
+ }
+ if (rx_extraPackets)
+ afsi_log("RX extraPackets is %d", rx_extraPackets);
+
dummyLen = sizeof(rx_mtu);
code = RegQueryValueEx(parmKey, "RxMaxMTU", NULL, NULL,
(BYTE *) &rx_mtu, &dummyLen);
code = RegQueryValueEx(parmKey, "RxEnablePeerStats", NULL, NULL,
(BYTE *) &rx_enable_peer_stats, &dummyLen);
if (code != ERROR_SUCCESS) {
- rx_enable_peer_stats = 0;
+ rx_enable_peer_stats = 1;
}
if (rx_enable_peer_stats)
afsi_log("RX Peer Statistics gathering is enabled");
+ else
+ afsi_log("RX Peer Statistics gathering is disabled");
dummyLen = sizeof(rx_enable_process_stats);
code = RegQueryValueEx(parmKey, "RxEnableProcessStats", NULL, NULL,
(BYTE *) &rx_enable_process_stats, &dummyLen);
if (code != ERROR_SUCCESS) {
- rx_enable_process_stats = 0;
+ rx_enable_process_stats = 1;
}
if (rx_enable_process_stats)
afsi_log("RX Process Statistics gathering is enabled");
+ else
+ afsi_log("RX Process Statistics gathering is disabled");
+
+ dummyLen = sizeof(dwValue);
+ dwValue = 0;
+ code = RegQueryValueEx(parmKey, "RxEnableHotThread", NULL, NULL,
+ (BYTE *) &dwValue, &dummyLen);
+ if (code != ERROR_SUCCESS || dwValue != 0) {
+ rx_EnableHotThread();
+ afsi_log("RX Hot Thread is enabled");
+ }
+ else
+ afsi_log("RX Hot Thread is disabled");
dummyLen = sizeof(DWORD);
code = RegQueryValueEx(parmKey, "CallBackPort", NULL, NULL,
cm_initParams.nChunkFiles = 0;
cm_initParams.nStatCaches = stats;
cm_initParams.nDataCaches = (afs_uint32)(cacheBlocks > 0xFFFFFFFF ? 0xFFFFFFFF : cacheBlocks);
- cm_initParams.nVolumeCaches = stats/2;
+ cm_initParams.nVolumeCaches = volumes;
cm_initParams.firstChunkSize = cm_chunkSize;
cm_initParams.otherChunkSize = cm_chunkSize;
cm_initParams.cacheSize = cacheSize;
cm_InitCallback();
- code = cm_InitMappedMemory(virtualCache, cm_CachePath, stats, cm_chunkSize, cacheBlocks, blockSize);
+ cm_InitNormalization();
+
+ code = cm_InitMappedMemory(virtualCache, cm_CachePath, stats, volumes, cells, cm_chunkSize, cacheBlocks, blockSize);
afsi_log("cm_InitMappedMemory code %x", code);
if (code != 0) {
*reasonP = "error initializing cache file";
code, cm_freelanceEnabled, (code ? "<none>" : rootCellName));
if (code != 0 && !cm_freelanceEnabled)
{
- *reasonP = "can't find root cell name in CellServDB";
+ *reasonP = "can't find root cell name in " AFS_CELLSERVDB;
return -1;
}
else if (cm_freelanceEnabled)
afsi_log("cm_GetCell addr %x", PtrToUlong(cm_data.rootCellp));
if (cm_data.rootCellp == NULL)
{
- *reasonP = "can't find root cell in afsdcell.ini";
+ *reasonP = "can't find root cell in " AFS_CELLSERVDB;
return -1;
}
}
osi_Log0(afsd_logp, "Loading Root Volume from cell");
do {
- code = cm_GetVolumeByName(cm_data.rootCellp, cm_rootVolumeName, cm_rootUserp,
+ code = cm_FindVolumeByName(cm_data.rootCellp, cm_rootVolumeName, cm_rootUserp,
&req, CM_GETVOL_FLAG_CREATE, &cm_data.rootVolumep);
- afsi_log("cm_GetVolumeByName code %x root vol %x", code,
+ afsi_log("cm_FindVolumeByName code %x root vol %x", code,
(code ? (cm_volume_t *)-1 : cm_data.rootVolumep));
} while (code && --attempts);
if (code != 0) {
/* compute the root fid */
if (!cm_freelanceEnabled) {
- cm_data.rootFid.cell = cm_data.rootCellp->cellID;
- cm_data.rootFid.volume = cm_GetROVolumeID(cm_data.rootVolumep);
- cm_data.rootFid.vnode = 1;
- cm_data.rootFid.unique = 1;
+ cm_SetFid(&cm_data.rootFid, cm_data.rootCellp->cellID, cm_GetROVolumeID(cm_data.rootVolumep), 1, 1);
}
else
cm_FakeRootFid(&cm_data.rootFid);
(BYTE *) &dwValue, &dummyLen);
if (code == ERROR_SUCCESS)
smb_StoreAnsiFilenames = dwValue ? 1 : 0;
+ afsi_log("StoreAnsiFilenames = %d", smb_StoreAnsiFilenames);
+
+ dummyLen = sizeof(DWORD);
+ code = RegQueryValueEx(parmKey, "EnableSMBAsyncStore", NULL, NULL,
+ (BYTE *) &dwValue, &dummyLen);
+ if (code == ERROR_SUCCESS)
+ smb_AsyncStore = dwValue == 2 ? 2 : (dwValue ? 1 : 0);
+ afsi_log("EnableSMBAsyncStore = %d", smb_AsyncStore);
+
+ dummyLen = sizeof(DWORD);
+ code = RegQueryValueEx(parmKey, "SMBAsyncStoreSize", NULL, NULL,
+ (BYTE *) &dwValue, &dummyLen);
+ if (code == ERROR_SUCCESS) {
+ /* Should check for >= blocksize && <= chunksize && round down to multiple of blocksize */
+ if (dwValue > cm_chunkSize)
+ smb_AsyncStoreSize = cm_chunkSize;
+ else if (dwValue < cm_data.buf_blockSize)
+ smb_AsyncStoreSize = cm_data.buf_blockSize;
+ else
+ smb_AsyncStoreSize = (dwValue & ~(cm_data.buf_blockSize-1));
+ } else
+ smb_AsyncStoreSize = CM_CONFIGDEFAULT_ASYNCSTORESIZE;
+ afsi_log("SMBAsyncStoreSize = %d", smb_AsyncStoreSize);
+
RegCloseKey (parmKey);
}
void afsd_SetUnhandledExceptionFilter()
{
+#ifndef NOTRACE
SetUnhandledExceptionFilter(afsd_ExceptionFilter);
+#endif
}
#ifdef _DEBUG