Windows: "ReparsePointPolicy" registry key

HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters

  DWORD "ReparsePointPolicy"

Valid values are:

 0 - No global policy set
 1 - Reparse Points to Files treated as the target File

Change-Id: Ib8f4f6a4c5c3b2faaf86a6650a4ce3ebcbbdf0e0
Reviewed-on: http://gerrit.openafs.org/9789
Reviewed-by: Peter Scott <pscott@kerneldrivers.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
This commit is contained in:
Jeffrey Altman 2013-04-14 21:08:20 -04:00
parent 6a3eca32a6
commit aa09c83070
5 changed files with 23 additions and 0 deletions

View File

@ -120,6 +120,8 @@ extern int cm_shortNames;
extern int cm_directIO;
extern int cm_volumeInfoReadOnlyFlag;
extern afs_uint32 rdr_ReparsePointPolicy;
extern long rx_mtu;
extern HANDLE WaitToTerminate;

View File

@ -81,6 +81,8 @@ int cm_shortNames = 1;
int cm_directIO = 1;
int cm_volumeInfoReadOnlyFlag = 0;
afs_uint32 rdr_ReparsePointPolicy = 0;
int smb_UseV3 = 1;
afs_uint32 smb_Enabled = 1;
@ -1414,6 +1416,16 @@ afsd_InitCM(char **reasonP)
}
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;

View File

@ -134,6 +134,8 @@ typedef struct _AFS_REDIR_INIT_INFO_CB
// 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

View File

@ -517,6 +517,12 @@ AFSInitializeRedirector( IN AFSRedirectorInitInfo *RedirInitInfo)
SetFlag( pDevExt->DeviceFlags, AFS_DEVICE_FLAG_DISABLE_SHORTNAMES);
}
//
// Global Reparse Point Policy
//
pDevExt->Specific.RDR.ReparsePointPolicy = RedirInitInfo->GlobalReparsePointPolicy;
//
// Are we performing direct to service IO?
//

View File

@ -214,6 +214,7 @@ RDR_SetInitParams( OUT AFSRedirectorInitInfo **ppRedirInitInfo, OUT DWORD * pRed
(*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;