summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jonathan Tan <jonathantanmy@google.com>2017-08-18 15:20:21 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2017-08-23 15:12:06 -0700
commit3836d88ae575cf2321fb17296f748c0bb35ba268 (patch)
tree5f1e224972bc8c3456862e387cd13977fb1ae205
parentpack: move release_pack_memory() (diff)
downloadtgif-3836d88ae575cf2321fb17296f748c0bb35ba268.tar.xz
pack: move pack-closing functions
The function close_pack_fd() needs to be temporarily made global. Its scope will be restored to static in a subsequent commit. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/am.c1
-rw-r--r--builtin/clone.c1
-rw-r--r--builtin/fetch.c1
-rw-r--r--builtin/merge.c1
-rw-r--r--builtin/receive-pack.c1
-rw-r--r--cache.h8
-rw-r--r--packfile.c54
-rw-r--r--packfile.h11
-rw-r--r--sha1_file.c55
9 files changed, 70 insertions, 63 deletions
diff --git a/builtin/am.c b/builtin/am.c
index 81095dae02..c369dd1dce 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -31,6 +31,7 @@
#include "mailinfo.h"
#include "apply.h"
#include "string-list.h"
+#include "packfile.h"
/**
* Returns 1 if the file is empty or does not exist, 0 otherwise.
diff --git a/builtin/clone.c b/builtin/clone.c
index f7e17d2295..8d11b570a1 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -25,6 +25,7 @@
#include "remote.h"
#include "run-command.h"
#include "connected.h"
+#include "packfile.h"
/*
* Overall FIXMEs:
diff --git a/builtin/fetch.c b/builtin/fetch.c
index d84c26391c..08e094bf12 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -17,6 +17,7 @@
#include "connected.h"
#include "argv-array.h"
#include "utf8.h"
+#include "packfile.h"
static const char * const builtin_fetch_usage[] = {
N_("git fetch [<options>] [<repository> [<refspec>...]]"),
diff --git a/builtin/merge.c b/builtin/merge.c
index 328945d609..dfd6830602 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -32,6 +32,7 @@
#include "gpg-interface.h"
#include "sequencer.h"
#include "string-list.h"
+#include "packfile.h"
#define DEFAULT_TWOHEAD (1<<0)
#define DEFAULT_OCTOPUS (1<<1)
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 14b6e09b42..52c63ebfdc 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -23,6 +23,7 @@
#include "fsck.h"
#include "tmp-objdir.h"
#include "oidset.h"
+#include "packfile.h"
static const char * const receive_pack_usage[] = {
N_("git receive-pack <git-dir>"),
diff --git a/cache.h b/cache.h
index 9fd61e9ea0..48f44959d2 100644
--- a/cache.h
+++ b/cache.h
@@ -1639,15 +1639,7 @@ extern int odb_mkstemp(struct strbuf *template, const char *pattern);
*/
extern int odb_pack_keep(const char *name);
-/*
- * munmap the index file for the specified packfile (if it is
- * currently mmapped).
- */
-extern void close_pack_index(struct packed_git *);
-
extern unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *);
-extern void close_pack_windows(struct packed_git *);
-extern void close_all_packs(void);
extern void unuse_pack(struct pack_window **);
extern void clear_delta_base_cache(void);
extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local);
diff --git a/packfile.c b/packfile.c
index 8daa74ad11..c8e2dbdeec 100644
--- a/packfile.c
+++ b/packfile.c
@@ -257,3 +257,57 @@ void release_pack_memory(size_t need)
while (need >= (cur - pack_mapped) && unuse_one_window(NULL))
; /* nothing */
}
+
+void close_pack_windows(struct packed_git *p)
+{
+ while (p->windows) {
+ struct pack_window *w = p->windows;
+
+ if (w->inuse_cnt)
+ die("pack '%s' still has open windows to it",
+ p->pack_name);
+ munmap(w->base, w->len);
+ pack_mapped -= w->len;
+ pack_open_windows--;
+ p->windows = w->next;
+ free(w);
+ }
+}
+
+int close_pack_fd(struct packed_git *p)
+{
+ if (p->pack_fd < 0)
+ return 0;
+
+ close(p->pack_fd);
+ pack_open_fds--;
+ p->pack_fd = -1;
+
+ return 1;
+}
+
+void close_pack_index(struct packed_git *p)
+{
+ if (p->index_data) {
+ munmap((void *)p->index_data, p->index_size);
+ p->index_data = NULL;
+ }
+}
+
+static void close_pack(struct packed_git *p)
+{
+ close_pack_windows(p);
+ close_pack_fd(p);
+ close_pack_index(p);
+}
+
+void close_all_packs(void)
+{
+ struct packed_git *p;
+
+ for (p = packed_git; p; p = p->next)
+ if (p->do_not_close)
+ die("BUG: want to close pack marked 'do-not-close'");
+ else
+ close_pack(p);
+}
diff --git a/packfile.h b/packfile.h
index f6fe1c7418..c6a07de623 100644
--- a/packfile.h
+++ b/packfile.h
@@ -43,6 +43,17 @@ extern void pack_report(void);
*/
extern int open_pack_index(struct packed_git *);
+/*
+ * munmap the index file for the specified packfile (if it is
+ * currently mmapped).
+ */
+extern void close_pack_index(struct packed_git *);
+
+extern void close_pack_windows(struct packed_git *);
+extern void close_all_packs(void);
+
+extern int close_pack_fd(struct packed_git *);
+
extern int unuse_one_window(struct packed_git *current);
extern void release_pack_memory(size_t);
diff --git a/sha1_file.c b/sha1_file.c
index dce232fb5c..de4aed63df 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -719,53 +719,6 @@ void *xmmap(void *start, size_t length,
return ret;
}
-void close_pack_windows(struct packed_git *p)
-{
- while (p->windows) {
- struct pack_window *w = p->windows;
-
- if (w->inuse_cnt)
- die("pack '%s' still has open windows to it",
- p->pack_name);
- munmap(w->base, w->len);
- pack_mapped -= w->len;
- pack_open_windows--;
- p->windows = w->next;
- free(w);
- }
-}
-
-static int close_pack_fd(struct packed_git *p)
-{
- if (p->pack_fd < 0)
- return 0;
-
- close(p->pack_fd);
- pack_open_fds--;
- p->pack_fd = -1;
-
- return 1;
-}
-
-static void close_pack(struct packed_git *p)
-{
- close_pack_windows(p);
- close_pack_fd(p);
- close_pack_index(p);
-}
-
-void close_all_packs(void)
-{
- struct packed_git *p;
-
- for (p = packed_git; p; p = p->next)
- if (p->do_not_close)
- die("BUG: want to close pack marked 'do-not-close'");
- else
- close_pack(p);
-}
-
-
/*
* The LRU pack is the one with the oldest MRU window, preferring packs
* with no used windows, or the oldest mtime if it has no windows allocated.
@@ -848,14 +801,6 @@ void unuse_pack(struct pack_window **w_cursor)
}
}
-void close_pack_index(struct packed_git *p)
-{
- if (p->index_data) {
- munmap((void *)p->index_data, p->index_size);
- p->index_data = NULL;
- }
-}
-
static unsigned int get_max_fd_limit(void)
{
#ifdef RLIMIT_NOFILE