Make sure packedgitwindowsize is multiple of (pagesize * 2)
authorJunio C Hamano <junkio@cox.net>
Wed, 14 Feb 2007 21:20:41 +0000 (13:20 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 14 Feb 2007 21:20:41 +0000 (13:20 -0800)
The next patch depends on this.

Signed-off-by: Junio C Hamano <junkio@cox.net>
config.c
git-compat-util.h

index d82107124a53bca99ee65ea31dceb3871bf6796f..c938aa0b15513265866b88dbb9b8217958cac376 100644 (file)
--- a/config.c
+++ b/config.c
@@ -310,12 +310,14 @@ int git_default_config(const char *var, const char *value)
        }
 
        if (!strcmp(var, "core.packedgitwindowsize")) {
-               int pgsz = getpagesize();
+               int pgsz_x2 = getpagesize() * 2;
                packed_git_window_size = git_config_int(var, value);
-               packed_git_window_size /= pgsz;
-               if (packed_git_window_size < 2)
-                       packed_git_window_size = 2;
-               packed_git_window_size *= pgsz;
+
+               /* This value must be multiple of (pagesize * 2) */
+               packed_git_window_size /= pgsz_x2;
+               if (packed_git_window_size < 1)
+                       packed_git_window_size = 1;
+               packed_git_window_size *= pgsz_x2;
                return 0;
        }
 
index c1bcb001a51324ebcb66bfb0a695e20ff366df02..105ac28f9766cb8800fcf6071fd94ed0e3cdf90a 100644 (file)
@@ -96,11 +96,14 @@ extern void set_warn_routine(void (*routine)(const char *warn, va_list params));
 extern void *git_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
 extern int git_munmap(void *start, size_t length);
 
+/* This value must be multiple of (pagesize * 2) */
 #define DEFAULT_PACKED_GIT_WINDOW_SIZE (1 * 1024 * 1024)
 
 #else /* NO_MMAP */
 
 #include <sys/mman.h>
+
+/* This value must be multiple of (pagesize * 2) */
 #define DEFAULT_PACKED_GIT_WINDOW_SIZE \
        (sizeof(void*) >= 8 \
                ?  1 * 1024 * 1024 * 1024 \