diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2011-03-02 10:01:54 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-03-02 11:25:30 -0800 |
commit | d131b7afea58f47721dafd013ab6aff4adfc42dd (patch) | |
tree | eba3c5c258ff6408d15170e03cf005ff40bceed8 /fast-import.c | |
parent | 38abd9b8b4e11aa0b4cdaa5c7b44e0c0ad06820b (diff) | |
download | git-d131b7afea58f47721dafd013ab6aff4adfc42dd.tar.gz git-d131b7afea58f47721dafd013ab6aff4adfc42dd.tar.xz |
sha1_file.c: Don't retain open fds on small packs
If a pack file is small enough that its entire contents fits within
one mmap window, mmap the file and then immediately close its file
descriptor. This reduces the number of file descriptors that are
needed to read from repositories with many tiny pack files, such
as one that has received 1000 pushes (and created 1000 small pack
files) since its last repack.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'fast-import.c')
-rw-r--r-- | fast-import.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fast-import.c b/fast-import.c index 970d8470e..2369a7b30 100644 --- a/fast-import.c +++ b/fast-import.c @@ -871,6 +871,7 @@ static void start_packfile(void) p = xcalloc(1, sizeof(*p) + strlen(tmpfile) + 2); strcpy(p->pack_name, tmpfile); p->pack_fd = pack_fd; + p->do_not_close = 1; pack_file = sha1fd(pack_fd, p->pack_name); hdr.hdr_signature = htonl(PACK_SIGNATURE); |