From: Patrick Steinhardt <ps@pks.im>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, "Randall S. Becker" <randall.becker@nexbridge.ca>
Subject: Re: [PATCH 1/4] reftable/stack: don't perform auto-compaction with less than two tables
Date: Sun, 22 Dec 2024 08:13:25 +0100 [thread overview]
Message-ID: <Z2e8FUdLPhJuzrEo@pks.im> (raw)
In-Reply-To: <xmqqseqgc4bd.fsf@gitster.g>
On Sat, Dec 21, 2024 at 09:51:34AM -0800, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
> > Patrick Steinhardt <ps@pks.im> writes:
> >
> >> In order to compact tables we need at least two tables. Bail out early
> >> from `reftable_stack_auto_compact()` in case we have less than two
> >> tables.
> >
> > While that is very true, bailing out on "< 2" would change the
> > behaviour. Where there were only one table, earlier we still went
> > ahead and exercised compaction code path, but now we no longer do.
> > The end result of having just a single table might logically be the
> > same with this change, but if we were relying on some side effects
> > of exercising the compaction code path, do we know that the rest of
> > the code is OK?
> >
> > That's the kind of questions I would ask, if this were somebody who
> > hasn't been deeply involved in the reftable code and came this deep
> > in the pre-release period. But since we all know you have been the
> > main driver for this effort, we'd take your word for it ;-)
> >
> > Thanks, will queue.
>
> And with code inspection, it can trivially seen that this change is
> perfectly fine.
>
> In the original, when "== 1", stack_table_sizes_for_compaction(st)
> yields an array with a single element, suggest_compaction_segment()
> gives back segment with .start and .end both set to 0, for which
> segment_size() returns 0 hence we do not call stack_compact_range().
> The original code happens to do the same when "== 0" (and 0-sized
> allocation does not give back NULL).
>
> So bypassing all of these when "== 1" is a no-op change, an
> optimization to avoid allocating a single-element array and then
> immediately freeing it. Doing so when "== 0" is a strict
> improvement on a platform with malloc that returns NULL for 0-sized
> allocation. So bypassing when "< 2" is totally safe and justifyable
> change.
Indeed. I'll include an explanation in v2 of this patch series.
Patrick
next prev parent reply other threads:[~2024-12-22 7:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-21 11:50 [PATCH 0/4] reftable: fix out-of-memory errors on NonStop Patrick Steinhardt
2024-12-21 11:50 ` [PATCH 1/4] reftable/stack: don't perform auto-compaction with less than two tables Patrick Steinhardt
2024-12-21 17:08 ` Junio C Hamano
2024-12-21 17:51 ` Junio C Hamano
2024-12-22 7:13 ` Patrick Steinhardt [this message]
2024-12-21 11:50 ` [PATCH 2/4] reftable/merged: fix zero-sized allocation when there are no readers Patrick Steinhardt
2024-12-21 12:40 ` Kristoffer Haugsbakk
2024-12-21 14:18 ` Patrick Steinhardt
2024-12-21 17:13 ` Junio C Hamano
2024-12-21 11:50 ` [PATCH 3/4] reftable/stack: " Patrick Steinhardt
2024-12-21 17:36 ` Junio C Hamano
2024-12-21 17:57 ` Junio C Hamano
2024-12-21 18:06 ` rsbecker
2024-12-21 18:30 ` Junio C Hamano
2024-12-22 17:48 ` rsbecker
2024-12-22 18:17 ` rsbecker
2024-12-22 18:35 ` Patrick Steinhardt
2024-12-23 4:08 ` Junio C Hamano
2024-12-22 7:13 ` Patrick Steinhardt
2024-12-21 11:50 ` [PATCH 4/4] reftable/basics: return NULL on zero-sized allocations Patrick Steinhardt
2024-12-21 12:53 ` Kristoffer Haugsbakk
2024-12-21 15:05 ` [PATCH 0/4] reftable: fix out-of-memory errors on NonStop Randall Becker
2024-12-21 17:43 ` Junio C Hamano
2024-12-21 16:52 ` Junio C Hamano
2024-12-22 7:24 ` [PATCH v2 " Patrick Steinhardt
2024-12-22 7:24 ` [PATCH v2 1/4] reftable/stack: don't perform auto-compaction with less than two tables Patrick Steinhardt
2024-12-22 7:24 ` [PATCH v2 2/4] reftable/merged: fix zero-sized allocation when there are no readers Patrick Steinhardt
2024-12-22 7:24 ` [PATCH v2 3/4] reftable/stack: " Patrick Steinhardt
2024-12-22 7:24 ` [PATCH v2 4/4] reftable/basics: return NULL on zero-sized allocations Patrick Steinhardt
2024-12-22 16:31 ` [PATCH v2 0/4] reftable: fix out-of-memory errors on NonStop 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z2e8FUdLPhJuzrEo@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=randall.becker@nexbridge.ca \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.