Skip to content

Commit

Permalink
sha1_file.c: Round the mmap offset to half the window size.
Browse files Browse the repository at this point in the history
This ensures that a given area is mapped at most twice, and greatly
reduces the virtual address space usage.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Alexandre Julliard authored and Junio C Hamano committed Feb 14, 2007
1 parent 5faaf24 commit 78a28df
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions sha1_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,6 @@ static unsigned int peak_pack_open_windows;
static unsigned int pack_open_windows;
static size_t peak_pack_mapped;
static size_t pack_mapped;
static size_t page_size;
struct packed_git *packed_git;

void pack_report()
Expand All @@ -416,7 +415,7 @@ void pack_report()
"pack_report: getpagesize() = %10" SZ_FMT "\n"
"pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n"
"pack_report: core.packedGitLimit = %10" SZ_FMT "\n",
page_size,
(size_t) getpagesize(),
packed_git_window_size,
packed_git_limit);
fprintf(stderr,
Expand Down Expand Up @@ -662,10 +661,9 @@ unsigned char* use_pack(struct packed_git *p,
break;
}
if (!win) {
if (!page_size)
page_size = getpagesize();
size_t window_align = packed_git_window_size / 2;
win = xcalloc(1, sizeof(*win));
win->offset = (offset / page_size) * page_size;
win->offset = (offset / window_align) * window_align;
win->len = p->pack_size - win->offset;
if (win->len > packed_git_window_size)
win->len = packed_git_window_size;
Expand Down

0 comments on commit 78a28df

Please sign in to comment.