Re: [PATCH 2/3] ieot: default to not writing IEOT section
- From
Ben Peart <peartben@gmail.com>
- Date
- Nov 13, 2018, 15:22 UTC
- Message-ID
- <f2f8cec8-d770-a1e9-b5a1-83653575122e@gmail.com>
- In-Reply-To
- <20181113003938.GC170017@google.com>
On 11/12/2018 7:39 PM, Jonathan Nieder wrote:
Show 16 quoted lines
> As with EOIE, popular versions of Git do not support the new IEOT > extension yet. When accessing a Git repository written by a more > modern version of Git, they correctly ignore the unrecognized section, > but in the process they loudly warn > > ignoring IEOT extension > > resulting in confusion for users. Introduce the index extension more > gently by not writing it yet in this first version with support for > it. Soon, once sufficiently many users are running a modern version > of Git, we can flip the default so users benefit from this index > extension by default. > > Introduce a '[index] recordOffsetTable' configuration variable to > control whether the new index extension is written. >
Why introduce a new setting to disable writing the IEOT extension instead of just using the existing index.threads setting? If index.threads=1 then the IEOT extension isn't written which (I believe) will accomplish the same goal.
Show 54 quoted lines
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
> Documentation/config.txt | 7 +++++++
> read-cache.c | 11 ++++++++++-
> 2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index d702379db4..cc66fb7de3 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -2195,6 +2195,13 @@ index.recordEndOfIndexEntries::
> reading the index using Git versions before 2.20. Defaults to
> 'false'.
>
> +index.recordOffsetTable::
> + Specifies whether the index file should include an "Index Entry
> + Offset Table" section. This reduces index load time on
> + multiprocessor machines but produces a message "ignoring IEOT
> + extension" when reading the index using Git versions before 2.20.
> + Defaults to 'false'.
> +
> index.threads::
> Specifies the number of threads to spawn when loading the index.
> This is meant to reduce index load time on multiprocessor machines.
> diff --git a/read-cache.c b/read-cache.c
> index 4bfe93c4c2..290bd54708 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -2707,6 +2707,15 @@ static int record_eoie(void)
> return 0;
> }
>
> +static int record_ieot(void)
> +{
> + int val;
> +
> + if (!git_config_get_bool("index.recordoffsettable", &val))
> + return val;
> + return 0;
> +}
> +
> /*
> * On success, `tempfile` is closed. If it is the temporary file
> * of a `struct lock_file`, we will therefore effectively perform
> @@ -2767,7 +2776,7 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
>
> #ifndef NO_PTHREADS
> nr_threads = git_config_get_index_threads();
> - if (nr_threads != 1) {
> + if (nr_threads != 1 && record_ieot()) {
> int ieot_blocks, cpus;
>
> /*
>