Re: [PATCH v3 09/25] midx: avoid opening multiple MIDXs when writing
- From
Jeff King <peff@peff.net>
- Date
- Aug 12, 2021, 20:22 UTC
- Message-ID
- <YRWDBdpizLH/gX1a@coredump.intra.peff.net>
- In-Reply-To
- <YRWBZJDCVyUOhk2F@coredump.intra.peff.net>
On Thu, Aug 12, 2021 at 04:15:32PM -0400, Jeff King wrote:
Show 27 quoted lines
> I think we'd need something like this:
>
> diff --git a/midx.c b/midx.c
> index 6dfafe7a8c..bfb6afea2e 100644
> --- a/midx.c
> +++ b/midx.c
> @@ -1123,8 +1123,7 @@ static int write_midx_internal(const char *object_dir,
> hold_lock_file_for_update(&lk, midx_name, LOCK_DIE_ON_ERROR);
> f = hashfd(get_lock_file_fd(&lk), get_lock_file_path(&lk));
>
> - if (ctx.m)
> - close_midx(ctx.m);
> + close_object_store(the_repository->objects);
>
> if (ctx.nr - dropped_packs == 0) {
> error(_("no pack files to index."));
>
> though I'm not sure:
>
> - if this should be unconditional or dependent on ctx.m (I think the
> latter, because if we are renaming over any open midx, we would have
> filled in ctx.m earlier).
>
> - if this should go below the "no pack files to index" check (i.e., is
> there any point in closing if we know we will not write?). In fact,
> its purpose might be more obvious right before finalize_hashfile(),
> but I am OK either way on that.Ah, this close_midx() actually gets moved and made unconditional later in the series. But it still needs to be close_object_store() instead.
Also, my mention of finalize_hashfile() is wrong. It's commit_lock_file() that does the actual rename, and indeed, that's where you moved it to in the end, which is good.
-Peff
> > -Peff