Windows: Direct IO Support for Service
[openafs.git] / src / WINNT / afsd / afsd_init.c
index 44763cf..c966486 100644 (file)
@@ -78,6 +78,7 @@ int cm_chunkSize;
 int cm_virtualCache = 0;
 afs_int32 cm_verifyData = 0;
 int cm_shortNames = 1;
+int cm_directIO = 1;
 
 int smb_UseV3 = 1;
 afs_uint32 smb_Enabled = 1;
@@ -1073,6 +1074,13 @@ afsd_InitCM(char **reasonP)
                             (BYTE *) &cm_freelanceImportCellServDB, &dummyLen);
     afsi_log("Freelance client %s import CellServDB",
               cm_freelanceImportCellServDB ? "does" : "does not");
+
+    dummyLen = sizeof(cm_freelanceDiscovery);
+    code = RegQueryValueEx(parmKey, "FreelanceDiscovery", NULL, NULL,
+                            (BYTE *) &cm_freelanceDiscovery, &dummyLen);
+    afsi_log("Freelance client discovery is %s",
+              cm_freelanceDiscovery ? "on" : "off");
+
 #endif /* AFS_FREELANCE_CLIENT */
 
     dummyLen = sizeof(smb_UseUnicode);
@@ -1369,16 +1377,26 @@ afsd_InitCM(char **reasonP)
     if (code == ERROR_SUCCESS) {
         cm_shortNames = (unsigned short) dwValue;
     } else {
-        /* disable by default on Win8 and Server 2008 R2 */
+        /* disable by default on Win7, Win 8, Server 2008 R2 and Server 2012 */
         if (osVersion.dwMajorVersion > 6 ||
             osVersion.dwMajorVersion == 6 &&
-            osVersion.dwMinorVersion >= 2)
+            osVersion.dwMinorVersion >= 1)
             cm_shortNames = 0;
         else
             cm_shortNames = 1;
     }
     afsi_log("CM ShortNames is %u", cm_shortNames);
 
+    dummyLen = sizeof(DWORD);
+    code = RegQueryValueEx(parmKey, "DirectIO", NULL, NULL,
+                           (BYTE *) &dwValue, &dummyLen);
+    if (code == ERROR_SUCCESS) {
+        cm_directIO = (unsigned short) dwValue;
+    } else {
+        cm_directIO = 1;
+    }
+    afsi_log("CM DirectIO is %u", cm_directIO);
+
     RegCloseKey (parmKey);
 
     cacheBlocks = ((afs_uint64)cacheSize * 1024) / blockSize;