From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: pclouds@gmail.com
Cc: git@vger.kernel.org, gitster@pobox.com, peartben@gmail.com,
peff@peff.net
Subject: [PATCH v2 08/10] read-cache.c: remove #ifdef NO_PTHREADS
Date: Sat, 27 Oct 2018 19:30:06 +0200 [thread overview]
Message-ID: <20181027173008.18852-9-pclouds@gmail.com> (raw)
In-Reply-To: <20181027173008.18852-1-pclouds@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
read-cache.c | 49 ++++++++++++++++++-------------------------------
1 file changed, 18 insertions(+), 31 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index d57958233e..ba870bc3fd 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1920,19 +1920,15 @@ struct index_entry_offset_table
struct index_entry_offset entries[FLEX_ARRAY];
};
-#ifndef NO_PTHREADS
static struct index_entry_offset_table *read_ieot_extension(const char *mmap, size_t mmap_size, size_t offset);
static void write_ieot_extension(struct strbuf *sb, struct index_entry_offset_table *ieot);
-#endif
static size_t read_eoie_extension(const char *mmap, size_t mmap_size);
static void write_eoie_extension(struct strbuf *sb, git_hash_ctx *eoie_context, size_t offset);
struct load_index_extensions
{
-#ifndef NO_PTHREADS
pthread_t pthread;
-#endif
struct index_state *istate;
const char *mmap;
size_t mmap_size;
@@ -2010,8 +2006,6 @@ static unsigned long load_all_cache_entries(struct index_state *istate,
return consumed;
}
-#ifndef NO_PTHREADS
-
/*
* Mostly randomly chosen maximum thread counts: we
* cap the parallelism to online_cpus() threads, and we want
@@ -2122,7 +2116,6 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
return consumed;
}
-#endif
/* remember to discard_cache() before reading a different cache! */
int do_read_index(struct index_state *istate, const char *path, int must_exist)
@@ -2135,10 +2128,8 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
size_t mmap_size;
struct load_index_extensions p;
size_t extension_offset = 0;
-#ifndef NO_PTHREADS
int nr_threads, cpus;
struct index_entry_offset_table *ieot = NULL;
-#endif
if (istate->initialized)
return istate->cache_nr;
@@ -2181,15 +2172,18 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
src_offset = sizeof(*hdr);
-#ifndef NO_PTHREADS
- nr_threads = git_config_get_index_threads();
+ if (HAVE_THREADS) {
+ nr_threads = git_config_get_index_threads();
- /* TODO: does creating more threads than cores help? */
- if (!nr_threads) {
- nr_threads = istate->cache_nr / THREAD_COST;
- cpus = online_cpus();
- if (nr_threads > cpus)
- nr_threads = cpus;
+ /* TODO: does creating more threads than cores help? */
+ if (!nr_threads) {
+ nr_threads = istate->cache_nr / THREAD_COST;
+ cpus = online_cpus();
+ if (nr_threads > cpus)
+ nr_threads = cpus;
+ }
+ } else {
+ nr_threads = 1;
}
if (nr_threads > 1) {
@@ -2219,21 +2213,16 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
} else {
src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);
}
-#else
- src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);
-#endif
istate->timestamp.sec = st.st_mtime;
istate->timestamp.nsec = ST_MTIME_NSEC(st);
/* if we created a thread, join it otherwise load the extensions on the primary thread */
-#ifndef NO_PTHREADS
- if (extension_offset) {
+ if (HAVE_THREADS && extension_offset) {
int ret = pthread_join(p.pthread, NULL);
if (ret)
die(_("unable to join load_index_extensions thread: %s"), strerror(ret));
}
-#endif
if (!extension_offset) {
p.src_offset = src_offset;
load_index_extensions(&p);
@@ -2756,8 +2745,11 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0)
return -1;
-#ifndef NO_PTHREADS
- nr_threads = git_config_get_index_threads();
+ if (HAVE_THREADS)
+ nr_threads = git_config_get_index_threads();
+ else
+ nr_threads = 1;
+
if (nr_threads != 1) {
int ieot_blocks, cpus;
@@ -2787,7 +2779,6 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
ieot_entries = DIV_ROUND_UP(entries, ieot_blocks);
}
}
-#endif
offset = lseek(newfd, 0, SEEK_CUR);
if (offset < 0) {
@@ -2871,8 +2862,7 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
* strip_extensions parameter as we need it when loading the shared
* index.
*/
-#ifndef NO_PTHREADS
- if (ieot) {
+ if (HAVE_THREADS && ieot) {
struct strbuf sb = STRBUF_INIT;
write_ieot_extension(&sb, ieot);
@@ -2883,7 +2873,6 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
if (err)
return -1;
}
-#endif
if (!strip_extensions && istate->split_index) {
struct strbuf sb = STRBUF_INIT;
@@ -3469,7 +3458,6 @@ static void write_eoie_extension(struct strbuf *sb, git_hash_ctx *eoie_context,
strbuf_add(sb, hash, the_hash_algo->rawsz);
}
-#ifndef NO_PTHREADS
#define IEOT_VERSION (1)
static struct index_entry_offset_table *read_ieot_extension(const char *mmap, size_t mmap_size, size_t offset)
@@ -3542,4 +3530,3 @@ static void write_ieot_extension(struct strbuf *sb, struct index_entry_offset_ta
strbuf_add(sb, &buffer, sizeof(uint32_t));
}
}
-#endif
--
2.19.1.647.g708186aaf9
next prev parent reply other threads:[~2018-10-27 17:30 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-27 7:09 [PATCH 00/10] Reduce #ifdef NO_PTHREADS Nguyễn Thái Ngọc Duy
2018-10-27 7:09 ` [PATCH 01/10] thread-utils: macros to unconditionally compile pthreads API Nguyễn Thái Ngọc Duy
2018-10-27 7:31 ` Jeff King
2018-10-27 7:40 ` Duy Nguyen
2018-10-27 8:15 ` Jeff King
2018-10-27 14:43 ` Duy Nguyen
2018-10-27 7:09 ` [PATCH 02/10] index-pack: remove #ifdef NO_PTHREADS Nguyễn Thái Ngọc Duy
2018-10-27 7:34 ` Jeff King
2018-10-27 7:09 ` [PATCH 03/10] name-hash.c: " Nguyễn Thái Ngọc Duy
2018-10-27 7:09 ` [PATCH 04/10] attr.c: " Nguyễn Thái Ngọc Duy
2018-10-27 7:09 ` [PATCH 05/10] send-pack.c: " Nguyễn Thái Ngọc Duy
2018-10-27 7:39 ` Jeff King
2018-10-27 7:09 ` [PATCH 06/10] grep: " Nguyễn Thái Ngọc Duy
2018-10-27 7:44 ` Jeff King
2018-10-29 2:16 ` Junio C Hamano
2018-10-29 14:25 ` Jeff King
2018-10-29 16:01 ` Duy Nguyen
2018-10-29 16:20 ` Jeff King
2018-10-30 1:27 ` Junio C Hamano
2018-10-27 7:10 ` [PATCH 07/10] preload-index.c: " Nguyễn Thái Ngọc Duy
2018-10-29 16:52 ` Ben Peart
2018-10-27 7:10 ` [PATCH 08/10] pack-objects: " Nguyễn Thái Ngọc Duy
2018-10-27 7:10 ` [PATCH 09/10] read-cache.c: " Nguyễn Thái Ngọc Duy
2018-10-29 17:05 ` Ben Peart
2018-10-29 17:21 ` Duy Nguyen
2018-10-29 17:58 ` Ben Peart
2018-10-30 1:44 ` Junio C Hamano
2018-10-27 7:10 ` [PATCH 10/10] Clean up pthread_create() error handling Nguyễn Thái Ngọc Duy
2018-10-27 7:24 ` [PATCH 00/10] Reduce #ifdef NO_PTHREADS Jeff King
2018-10-27 8:13 ` Jeff King
2018-10-27 17:07 ` Duy Nguyen
2018-10-27 17:29 ` [PATCH v2 " Nguyễn Thái Ngọc Duy
2018-10-27 17:29 ` [PATCH v2 01/10] thread-utils: macros to unconditionally compile pthreads API Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` [PATCH v2 02/10] index-pack: remove #ifdef NO_PTHREADS Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` [PATCH v2 03/10] name-hash.c: " Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` [PATCH v2 04/10] attr.c: " Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` [PATCH v2 05/10] grep: " Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` [PATCH v2 06/10] preload-index.c: " Nguyễn Thái Ngọc Duy
2018-10-29 17:21 ` Ben Peart
2018-10-29 17:26 ` Duy Nguyen
2018-10-29 18:05 ` Ben Peart
2018-10-29 20:11 ` Jeff King
2018-10-27 17:30 ` [PATCH v2 07/10] pack-objects: " Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` Nguyễn Thái Ngọc Duy [this message]
2018-10-29 14:30 ` [PATCH v2 08/10] read-cache.c: " Jeff King
2018-10-29 17:07 ` Ben Peart
2018-10-29 17:23 ` Ben Peart
2018-10-27 17:30 ` [PATCH v2 09/10] Clean up pthread_create() error handling Nguyễn Thái Ngọc Duy
2018-10-27 17:30 ` [PATCH v2 10/10] read-cache.c: initialize copy_len to shut up gcc 8 Nguyễn Thái Ngọc Duy
2018-10-29 14:31 ` Jeff King
2018-11-03 8:48 ` [PATCH v3 00/14] Reduce #ifdef NO_PTHREADS Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 01/14] thread-utils: macros to unconditionally compile pthreads API Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 02/14] run-command.h: include thread-utils.h instead of pthread.h Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 03/14] send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 04/14] index-pack: remove #ifdef NO_PTHREADS Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 05/14] name-hash.c: " Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 06/14] attr.c: " Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 07/14] grep: " Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 08/14] grep: clean up num_threads handling Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 09/14] preload-index.c: remove #ifdef NO_PTHREADS Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 10/14] pack-objects: " Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 11/14] read-cache.c: " Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 12/14] read-cache.c: reduce branching based on HAVE_THREADS Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 13/14] read-cache.c: initialize copy_len to shut up gcc 8 Nguyễn Thái Ngọc Duy
2018-11-03 8:48 ` [PATCH v3 14/14] Clean up pthread_create() error handling Nguyễn Thái Ngọc Duy
2018-11-06 4:51 ` [PATCH v3 00/14] Reduce #ifdef NO_PTHREADS Junio C Hamano
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181027173008.18852-9-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peartben@gmail.com \
--cc=peff@peff.net \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).