From: Karthik Nayak Date: Tue, 09 Sep 2025 07:49:47 GMT Subject: Re: [PATCH v3 01/15] packfile: introduce a new `struct packfile_store` Message-ID: In-Reply-To: <20250902-b4-pks-packfiles-store-v3-1-6925278efeda@pks.im> Patrick Steinhardt writes: > Information about a object database's packfiles is currently distributed > across two different structures: > > - `struct packed_git` contains the `next` pointer as well as the > `mru_head`, both of which serve to store the list of packfiles. > > - `struct object_database` contains several fields that relate to the > packfiles. > > So we don't really have a central data structure that tracks our > packfiles, and consequently responsibilities aren't always clear cut. > A consequence for the upcoming pluggable object databases is that this > makes it very hard to move management of packfiles from the object > database level down into the object database source. > > Introduce a new `struct packfile_store` which is about to become the > single source of truth for managing packfiles. Right now this data > structure doesn't yet contain anything, but in subsequent patches we > will move all data structures that relate to packfiles and that are > currently contained in `struct object_database` into this new home. > > Note that this is only a first step: most importantly, we won't (yet) > move the `struct packed_git::next` pointer around. This will happen in a > subsequent patch series though so that `struct packed_git` will really > only host information about the specific packfile it represents. > > Further note that the new structure still sits at the wrong level at the > end of this patch series: as mentioned, it should eventually sit at the > level of the object database source, not at the object database level. > But introducing the packfile store now already makes it way easier to > eventually push down the now-selfcontained data structure by one level. > > Signed-off-by: Patrick Steinhardt > --- > odb.c | 1 + > odb.h | 3 ++- > packfile.c | 13 +++++++++++++ > packfile.h | 18 ++++++++++++++++++ > 4 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/odb.c b/odb.c > index 75c443fe66..a2289ea97d 100644 > --- a/odb.c > +++ b/odb.c > @@ -996,6 +996,7 @@ struct object_database *odb_new(struct repository *repo) > > memset(o, 0, sizeof(*o)); > o->repo = repo; > + o->packfiles = packfile_store_new(o); I assume that the packfile_store needs a linkback to the odb for some reason which is utilized in the future commits. reading on. [snip]