From: Stefan Beller <sbeller@google.com>
To: gitster@pobox.com, mhagger@alum.mit.edu
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>
Subject: [PATCH 2/3] Move get_max_fd_limit(void) to git_compat_util.h
Date: Thu, 16 Apr 2015 16:17:38 -0700 [thread overview]
Message-ID: <1429226259-21622-3-git-send-email-sbeller@google.com> (raw)
In-Reply-To: <1429226259-21622-1-git-send-email-sbeller@google.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
git-compat-util.h | 1 +
sha1_file.c | 41 -----------------------------------------
wrapper.c | 41 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 42 insertions(+), 41 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index bc8fc8c..2c55ca7 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -675,6 +675,7 @@ extern int xmkstemp_mode(char *template, int mode);
extern int odb_mkstemp(char *template, size_t limit, const char *pattern);
extern int odb_pack_keep(char *name, size_t namesz, const unsigned char *sha1);
extern char *xgetcwd(void);
+extern unsigned int get_max_fd_limit(void);
#define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), (alloc) * sizeof(*(x)))
diff --git a/sha1_file.c b/sha1_file.c
index 88f06ba..1f2519c 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -870,47 +870,6 @@ void free_pack_by_name(const char *pack_name)
}
}
-static unsigned int get_max_fd_limit(void)
-{
-#ifdef RLIMIT_NOFILE
- {
- struct rlimit lim;
-
- if (!getrlimit(RLIMIT_NOFILE, &lim))
- return lim.rlim_cur;
- }
-#endif
-
-#ifdef _SC_OPEN_MAX
- {
- long open_max = sysconf(_SC_OPEN_MAX);
- if (0 < open_max)
- return open_max;
- /*
- * Otherwise, we got -1 for one of the two
- * reasons:
- *
- * (1) sysconf() did not understand _SC_OPEN_MAX
- * and signaled an error with -1; or
- * (2) sysconf() said there is no limit.
- *
- * We _could_ clear errno before calling sysconf() to
- * tell these two cases apart and return a huge number
- * in the latter case to let the caller cap it to a
- * value that is not so selfish, but letting the
- * fallback OPEN_MAX codepath take care of these cases
- * is a lot simpler.
- */
- }
-#endif
-
-#ifdef OPEN_MAX
- return OPEN_MAX;
-#else
- return 1; /* see the caller ;-) */
-#endif
-}
-
/*
* Do not call this directly as this leaks p->pack_fd on error return;
* call open_packed_git() instead.
diff --git a/wrapper.c b/wrapper.c
index d5a6cef..493bf6f 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -303,6 +303,47 @@ ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset)
return total;
}
+unsigned int get_max_fd_limit(void)
+{
+#ifdef RLIMIT_NOFILE
+ {
+ struct rlimit lim;
+
+ if (!getrlimit(RLIMIT_NOFILE, &lim))
+ return lim.rlim_cur;
+ }
+#endif
+
+#ifdef _SC_OPEN_MAX
+ {
+ long open_max = sysconf(_SC_OPEN_MAX);
+ if (0 < open_max)
+ return open_max;
+ /*
+ * Otherwise, we got -1 for one of the two
+ * reasons:
+ *
+ * (1) sysconf() did not understand _SC_OPEN_MAX
+ * and signaled an error with -1; or
+ * (2) sysconf() said there is no limit.
+ *
+ * We _could_ clear errno before calling sysconf() to
+ * tell these two cases apart and return a huge number
+ * in the latter case to let the caller cap it to a
+ * value that is not so selfish, but letting the
+ * fallback OPEN_MAX codepath take care of these cases
+ * is a lot simpler.
+ */
+ }
+#endif
+
+#ifdef OPEN_MAX
+ return OPEN_MAX;
+#else
+ return 1; /* see the caller ;-) */
+#endif
+}
+
int xdup(int fd)
{
int ret = dup(fd);
--
2.3.0.81.gc37f363
next prev parent reply other threads:[~2015-04-16 23:18 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-16 23:17 [PATCH 0/3] Another approach to large transactions Stefan Beller
2015-04-16 23:17 ` [PATCH 1/3] refs.c: remove lock_fd from struct ref_lock Stefan Beller
2015-04-16 23:17 ` Stefan Beller [this message]
2015-04-16 23:17 ` [PATCH 3/3] refs.c: enable large transactions Stefan Beller
2015-04-17 17:09 ` [PATCH 0/3] Another approach to " Junio C Hamano
2015-04-17 22:12 ` Junio C Hamano
2015-04-17 22:17 ` Stefan Beller
2015-04-17 23:31 ` Stefan Beller
2015-04-20 22:26 ` Stefan Beller
2015-04-20 22:51 ` Junio C Hamano
2015-04-20 23:07 ` Stefan Beller
2015-04-21 0:31 ` Stefan Beller
2015-04-21 0:35 ` [PATCH] refs.c: enable " Stefan Beller
2015-04-21 17:16 ` Junio C Hamano
2015-04-21 17:24 ` Stefan Beller
2015-04-21 18:00 ` Junio C Hamano
2015-04-21 19:06 ` [PATCHv2] " Stefan Beller
2015-04-21 19:56 ` Stefan Beller
2015-04-22 14:11 ` Michael Haggerty
2015-04-22 19:09 ` Stefan Beller
2015-04-22 20:12 ` Michael Haggerty
2015-04-21 17:22 ` [PATCH] " Junio C Hamano
2015-04-21 23:21 ` [PATCH 0/3] Another approach to " Jeff King
2015-04-22 19:14 ` Stefan Beller
2015-04-22 20:11 ` Jeff King
2015-04-21 17:19 ` Junio C Hamano
2015-04-21 17:31 ` Stefan Beller
2015-04-21 12:37 ` Michael Haggerty
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1429226259-21622-3-git-send-email-sbeller@google.com \
--to=sbeller@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mhagger@alum.mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).