[PATCH 6/6] packed_ref_cache: don't use mmap() for small files
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Jan 24, 2018, 11:14 UTC
- Message-ID
- <411272c9a3fd159ceae4649ebdb9d121ba0ea742.1516791909.git.mhagger@alum.mit.edu>
- In-Reply-To
- <cea5e366-dc95-6f41-6373-f8bbef103561@alum.mit.edu>
From: Kim Gybels <kgybels@infogroep.be>
Take a hint from commit ea68b0ce9f8 (hash-object: don't use mmap() for small files, 2010-02-21) and use read() instead of mmap() for small packed-refs files.
Signed-off-by: Kim Gybels <kgybels@infogroep.be> Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> --- refs/packed-backend.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/refs/packed-backend.c b/refs/packed-backend.c index e829cf206d..8b4b45da67 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -458,6 +458,8 @@ static void verify_buffer_safe(struct snapshot *snapshot) last_line, eof - last_line); } +#define SMALL_FILE_SIZE (32*1024) + /* * Depending on `mmap_strategy`, either mmap or read the contents of * the `packed-refs` file into the snapshot. Return 1 if the file @@ -495,7 +497,7 @@ static int load_contents(struct snapshot *snapshot) if (!size) { return 0; - } else if (mmap_strategy == MMAP_NONE) { + } else if (mmap_strategy == MMAP_NONE || size <= SMALL_FILE_SIZE) { snapshot->buf = xmalloc(size); bytes_read = read_in_full(fd, snapshot->buf, size); if (bytes_read < 0 || bytes_read != size)
-- 2.14.2