extern int cm_directIO;
extern int cm_volumeInfoReadOnlyFlag;
+extern afs_uint32 rdr_ReparsePointPolicy;
+
extern long rx_mtu;
extern HANDLE WaitToTerminate;
int cm_directIO = 1;
int cm_volumeInfoReadOnlyFlag = 0;
+afs_uint32 rdr_ReparsePointPolicy = 0;
+
int smb_UseV3 = 1;
afs_uint32 smb_Enabled = 1;
}
afsi_log("CM DirectIO is %u", cm_directIO);
+ dummyLen = sizeof(DWORD);
+ code = RegQueryValueEx(parmKey, "ReparsePointPolicy", NULL, NULL,
+ (BYTE *) &dwValue, &dummyLen);
+ if (code == ERROR_SUCCESS) {
+ rdr_ReparsePointPolicy = (unsigned short) dwValue;
+ } else {
+ rdr_ReparsePointPolicy = 0;
+ }
+ afsi_log("RDR ReparsePointPolicy is 0x%x", rdr_ReparsePointPolicy);
+
RegCloseKey (parmKey);
cacheBlocks = ((afs_uint64)cacheSize * 1024) / blockSize;
// dynamic and will be increased in size as
// needed by this amount
+ ULONG GlobalReparsePointPolicy; // One or more of AFS_REPARSE_POINT_VALID_POLICY_FLAGS
+
LARGE_INTEGER MemoryCacheOffset; // The offset in the afsd_service process memory
// space at which the extents are allocated
LARGE_INTEGER MemoryCacheLength; // and the length of the allocated region
}
//
+ // Global Reparse Point Policy
+ //
+
+ pDevExt->Specific.RDR.ReparsePointPolicy = RedirInitInfo->GlobalReparsePointPolicy;
+
+ //
// Are we performing direct to service IO?
//
(*ppRedirInitInfo)->CacheBlockSize = cm_data.blockSize;
(*ppRedirInitInfo)->MaxPathLinkCount = MAX_FID_COUNT;
(*ppRedirInitInfo)->NameArrayLength = MAX_FID_COUNT;
+ (*ppRedirInitInfo)->GlobalReparsePointPolicy = rdr_ReparsePointPolicy;
if (cm_virtualCache || cm_data.bufferSize <= maxMemoryCacheSize) {
osi_Log0(afsd_logp, "RDR_SetInitParams Initializing Memory Extent Interface");
(*ppRedirInitInfo)->MemoryCacheOffset.QuadPart = (LONGLONG)cm_data.bufDataBaseAddress;