From: Brandon Williams <bmwill@google.com>
To: Jeff King <peff@peff.net>
Cc: "Michael Haggerty" <mhagger@alum.mit.edu>,
"Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Stefan Beller" <sbeller@google.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"David Turner" <novalis@novalis.org>,
git@vger.kernel.org
Subject: Re: [PATCH 10/23] files_ref_store: put the packed files lock directly in this struct
Date: Thu, 18 May 2017 08:42:07 -0700 [thread overview]
Message-ID: <20170518154207.GC112091@google.com> (raw)
In-Reply-To: <20170518011153.luuacy5jay6vinzv@sigill.intra.peff.net>
On 05/17, Jeff King wrote:
> On Wed, May 17, 2017 at 05:17:17PM -0700, Brandon Williams wrote:
>
> > > This made me wonder how we handle the locking for ref_stores besides the
> > > main one (e.g., for submodules). The lockfile structs have to remain
> > > valid for the length of the program. Previously those stores could have
> > > xcalloc()'d a lockfile and just leaked it. Now they'll need to xcalloc()
> > > and leak their whole structs.
> >
> > Wait, why would this be the case? I would assume that you would
> > allocate a ref_store (including a lockfile for it) and then once you are
> > done with the ref_store, you free it (and unlock and free the lockfile).
> > I'm definitely not versed in ref handling code though so I may be
> > missing something.
>
> One used, you are not allowed to free a lockfile struct (actually these
> days it's just the "tempfile" part of it), because it lives on the
> cleanup-handler's tempfile_list forever.
>
> This is a holdover from the early days of the lockfile code, but I think
> we could loosen it (and that's the right solution in the long run).
>
Ah ok, thanks for the info!
> > > I suspect the answer is "we don't ever lock anything except the main ref
> > > store because that is the only one we write to", so it doesn't matter
> > > anyway.
> >
> > Really? I can envision a case in the future where we'd want to update
> > a ref, or create a ref inside a submodule.
>
> Oh, I agree it's a probable thing for the future. I was mostly wondering
> about the immediate change. I think this patch makes things slightly
> worse for that future, but the right fix is to remove the weird tempfile
> lifetime requirement in the first place.
>
> -Peff
--
Brandon Williams
next prev parent reply other threads:[~2017-05-18 15:42 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-17 12:05 [PATCH 00/23] Prepare to separate out a packed_ref_store Michael Haggerty
2017-05-17 12:05 ` [PATCH 01/23] t3600: clean up permissions test properly Michael Haggerty
2017-05-17 12:42 ` Jeff King
2017-05-17 14:01 ` Michael Haggerty
2017-05-18 4:10 ` Junio C Hamano
2017-05-19 3:37 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 02/23] refs.h: clarify docstring for the ref_transaction_update()-related fns Michael Haggerty
2017-05-17 16:46 ` Stefan Beller
2017-05-18 4:13 ` Junio C Hamano
2017-05-17 12:05 ` [PATCH 03/23] ref_iterator_begin_fn(): fix docstring Michael Haggerty
2017-05-17 12:05 ` [PATCH 04/23] prefix_ref_iterator: don't trim too much Michael Haggerty
2017-05-17 12:55 ` Jeff King
2017-05-17 14:11 ` Michael Haggerty
2017-05-17 14:22 ` Jeff King
2017-05-18 4:19 ` Junio C Hamano
2017-05-18 4:50 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 05/23] refs_ref_iterator_begin(): don't check prefixes redundantly Michael Haggerty
2017-05-17 12:59 ` Jeff King
2017-05-17 14:21 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 06/23] refs: use `size_t` indexes when iterating over ref transaction updates Michael Haggerty
2017-05-17 16:59 ` Stefan Beller
2017-05-18 4:55 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 07/23] ref_store: take `logmsg` parameter when deleting references Michael Haggerty
2017-05-17 13:12 ` Jeff King
2017-05-17 15:01 ` Michael Haggerty
2017-05-17 15:03 ` Jeff King
2017-05-17 12:05 ` [PATCH 08/23] lockfile: add a new method, is_lock_file_locked() Michael Haggerty
2017-05-17 13:12 ` Jeff King
2017-05-17 12:05 ` [PATCH 09/23] files-backend: move `lock` member to `files_ref_store` Michael Haggerty
2017-05-17 13:15 ` Jeff King
2017-05-17 15:49 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 10/23] files_ref_store: put the packed files lock directly in this struct Michael Haggerty
2017-05-17 13:17 ` Jeff King
2017-05-17 15:05 ` Michael Haggerty
2017-05-17 17:18 ` Stefan Beller
2017-05-18 0:18 ` Brandon Williams
2017-05-19 4:00 ` Michael Haggerty
2017-05-18 0:17 ` Brandon Williams
2017-05-18 1:11 ` Jeff King
2017-05-18 15:42 ` Brandon Williams [this message]
2017-05-17 12:05 ` [PATCH 11/23] files_transaction_cleanup(): new helper function Michael Haggerty
2017-05-17 13:19 ` Jeff King
2017-05-19 4:49 ` Michael Haggerty
2017-05-17 17:26 ` Stefan Beller
2017-05-19 4:42 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 12/23] ref_transaction_commit(): break into multiple functions Michael Haggerty
2017-05-17 17:44 ` Stefan Beller
2017-05-19 7:58 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 13/23] ref_update_reject_duplicates(): expose function to whole refs module Michael Haggerty
2017-05-17 12:05 ` [PATCH 14/23] ref_update_reject_duplicates(): use `size_t` rather than `int` Michael Haggerty
2017-05-17 12:05 ` [PATCH 15/23] ref_update_reject_duplicates(): add a sanity check Michael Haggerty
2017-05-17 12:05 ` [PATCH 16/23] should_pack_ref(): new function, extracted from `files_pack_refs()` Michael Haggerty
2017-05-17 12:05 ` [PATCH 17/23] get_packed_ref_cache(): assume "packed-refs" won't change while locked Michael Haggerty
2017-05-17 17:57 ` Stefan Beller
2017-05-18 1:15 ` Jeff King
2017-05-18 16:58 ` Stefan Beller
2017-05-17 12:05 ` [PATCH 18/23] read_packed_refs(): do more of the work of reading packed refs Michael Haggerty
2017-05-17 12:05 ` [PATCH 19/23] read_packed_refs(): report unexpected fopen() failures Michael Haggerty
2017-05-17 13:28 ` Jeff King
2017-05-17 15:27 ` Michael Haggerty
2017-05-18 4:57 ` Junio C Hamano
2017-05-18 5:08 ` Jeff King
2017-05-17 12:05 ` [PATCH 20/23] refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA` Michael Haggerty
2017-05-17 13:29 ` Jeff King
2017-05-17 12:05 ` [PATCH 21/23] create_ref_entry(): remove `check_name` option Michael Haggerty
2017-05-17 12:05 ` [PATCH 22/23] ref-filter: limit traversal to prefix Michael Haggerty
2017-05-17 13:38 ` Jeff King
2017-05-19 10:02 ` Michael Haggerty
2017-05-17 12:05 ` [PATCH 23/23] cache_ref_iterator_begin(): avoid priming unneeded directories Michael Haggerty
2017-05-17 13:42 ` [PATCH 00/23] Prepare to separate out a packed_ref_store Jeff King
2017-05-17 18:14 ` Stefan Beller
2017-05-18 17:14 ` Johannes Sixt
2017-05-18 17:22 ` Jeff King
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=20170518154207.GC112091@google.com \
--to=bmwill@google.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mhagger@alum.mit.edu \
--cc=novalis@novalis.org \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=sbeller@google.com \
/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.