git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] odb: track multi-pack-indices via their object sources
@ 2025-07-09  7:54 Patrick Steinhardt
  2025-07-09  7:54 ` [PATCH 1/8] midx: start tracking per object database source Patrick Steinhardt
                   ` (9 more replies)
  0 siblings, 10 replies; 43+ messages in thread
From: Patrick Steinhardt @ 2025-07-09  7:54 UTC (permalink / raw)
  To: git

Hi,

multi-pack-indices are tracked via `struct multi_pack_index`. This data
structure is stored inside `struct object_database`, which is the global
database that spans across all of the object sources

This layout causes two problems:

  - Multi-pack indices aren't global to an object database, but instead
    there can be one multi-pack index per object source. This creates a
    mismatch between the on-disk layout and how things are organized in
    the object database subsystems and makes some parts, like figuring
    out whether an object source has an MIDX, quite awkward.

  - Multi-pack indices are an implementation detail of how efficient
    access for packfiles work. As such, they are neither relevant in the
    context of loose objects, nor in a potential future where we have
    pluggable backends.

This patch series thus refactors the codebase to stop tracking MIDX's
globally. Instead, they are being pushed down one level so that every
`struct odb_source` has an optional MIDX itself. This simplifies some of
our code and will make it easier in a future iteration to move the data
into a packfile-specific object source backend.

This series is built on top of a30f80fde92 (The eighth batch,
2025-07-08) with "ps/object-store" at 841a03b4046 (odb: rename
`read_object_with_reference()`, 2025-07-01) merged into it.

Thanks!

Patrick

---
Patrick Steinhardt (8):
      midx: start tracking per object database source
      packfile: refactor `prepare_packed_git_one()` to work on sources
      midx: stop using linked list when closing MIDX
      midx: track whether we have loaded the MIDX
      packfile: refactor `get_multi_pack_index()` to work on sources
      packfile: stop using linked MIDX list in `find_pack_entry()`
      packfile: stop using linked MIDX list in `get_all_packs()`
      midx: remove now-unused linked list of multi-pack indices

 builtin/pack-objects.c |  9 ++++--
 builtin/repack.c       |  4 +--
 midx-write.c           | 22 ++-----------
 midx.c                 | 38 +++++++++-------------
 midx.h                 |  9 +++---
 object-name.c          | 21 ++++++++-----
 odb.h                  | 19 +++++------
 pack-bitmap.c          | 20 ++++++++----
 packfile.c             | 85 ++++++++++++++++++++++----------------------------
 packfile.h             |  3 +-
 10 files changed, 105 insertions(+), 125 deletions(-)


---
base-commit: 1ad11c8963b6902bb6a98f5071591ad358329fe4
change-id: 20250513-b4-pks-midx-via-odb-alternate-d4b5940a28cd


^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2025-08-12 21:58 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-09  7:54 [PATCH 0/8] odb: track multi-pack-indices via their object sources Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 1/8] midx: start tracking per object database source Patrick Steinhardt
2025-07-10 20:56   ` Justin Tobler
2025-07-10 23:10   ` Taylor Blau
2025-07-10 23:19     ` Taylor Blau
2025-07-15  8:26       ` Patrick Steinhardt
2025-07-15  8:26     ` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 2/8] packfile: refactor `prepare_packed_git_one()` to work on sources Patrick Steinhardt
2025-07-10 21:07   ` Justin Tobler
2025-07-10 23:14   ` Taylor Blau
2025-07-15  8:26     ` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 3/8] midx: stop using linked list when closing MIDX Patrick Steinhardt
2025-07-10 21:31   ` Justin Tobler
2025-07-15  8:26     ` Patrick Steinhardt
2025-07-10 23:22   ` Taylor Blau
2025-07-15  8:26     ` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 4/8] midx: track whether we have loaded the MIDX Patrick Steinhardt
2025-07-10 22:16   ` Justin Tobler
2025-07-10 23:26     ` Taylor Blau
2025-07-15  8:27       ` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 5/8] packfile: refactor `get_multi_pack_index()` to work on sources Patrick Steinhardt
2025-07-10 22:35   ` Justin Tobler
2025-07-10 23:56   ` Taylor Blau
2025-07-15  8:27     ` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 6/8] packfile: stop using linked MIDX list in `find_pack_entry()` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 7/8] packfile: stop using linked MIDX list in `get_all_packs()` Patrick Steinhardt
2025-07-09  7:54 ` [PATCH 8/8] midx: remove now-unused linked list of multi-pack indices Patrick Steinhardt
2025-07-10 22:48   ` Justin Tobler
2025-07-09 22:04 ` [PATCH 0/8] odb: track multi-pack-indices via their object sources Junio C Hamano
2025-07-10 23:58   ` Taylor Blau
2025-07-15  8:27     ` Patrick Steinhardt
2025-07-15 11:29 ` [PATCH v2 0/7] " Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 1/7] midx: start tracking per object database source Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 2/7] packfile: refactor `prepare_packed_git_one()` to work on sources Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 3/7] midx: stop using linked list when closing MIDX Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 4/7] packfile: refactor `get_multi_pack_index()` to work on sources Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 5/7] packfile: stop using linked MIDX list in `find_pack_entry()` Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 6/7] packfile: stop using linked MIDX list in `get_all_packs()` Patrick Steinhardt
2025-07-15 11:29   ` [PATCH v2 7/7] midx: remove now-unused linked list of multi-pack indices Patrick Steinhardt
2025-07-15 21:59   ` [PATCH v2 0/7] odb: track multi-pack-indices via their object sources Justin Tobler
2025-07-23 21:22   ` Junio C Hamano
2025-07-24  8:00     ` Patrick Steinhardt
2025-08-12 21:58       ` Taylor Blau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).