Windows: Cap Cache Size on X86
authorJeffrey Altman <jaltman@your-file-system.com>
Sat, 17 Aug 2013 14:18:53 +0000 (10:18 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Wed, 21 Aug 2013 12:00:02 +0000 (05:00 -0700)
Since we know the cache size cannot be arbitrary size because it
must fit into contiguous process memory and because it is difficult
to compute the actual size limit, cap the size to 716800KB.

Change-Id: I850f489dc8a392875582e52d8d511dedf69aec9c
Reviewed-on: http://gerrit.openafs.org/10151
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsd/afsd_init.c

index 244ed44..5ef1aeb 100644 (file)
@@ -732,6 +732,19 @@ afsd_InitCM(char **reasonP)
     if (code != ERROR_SUCCESS)
         cacheSize = CM_CONFIGDEFAULT_CACHESIZE;
 
+#if defined(_X86)
+    /*
+     * For 32-bit systems the max process space is 2GB and the
+     * max cache size is the max contiguous free address space.
+     * Since it is too hard to calculate what that is simply
+     * cap the value at 716800.
+     */
+    if (cacheSize > 716800) {
+       afsi_log("Requested Cache size %u", cacheSize);
+       cacheSize = 716800;
+    }
+#endif
+
     if (cm_virtualCache) {
         MEMORYSTATUSEX memStatus;
         DWORD maxCacheSize;