[PATCH v2 08/13] object-file: move loose object map into loose source
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Oct 31, 2025, 06:12 UTC
- Message-ID
- <20251031-b4-pks-odb-loose-backend-v2-8-920f721aef71@pks.im>
- In-Reply-To
- <20251031-b4-pks-odb-loose-backend-v2-0-920f721aef71@pks.im>
The loose object map is used to map from the repository's canonical object hash to the compatibility hash. As the name indicates, this map is only used for loose objects, and as such it is tied to a specific loose object source.
Same as with preceding commits, move this map into the loose object source accordingly.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- loose.c | 10 +++++----- object-file.c | 1 + object-file.h | 3 +++ odb.c | 1 - odb.h | 3 --- 5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/loose.c b/loose.c index 8cc7573ff2b..56cf64b648b 100644 --- a/loose.c +++ b/loose.c @@ -49,7 +49,7 @@ static int insert_loose_map(struct odb_source *source, const struct object_id *oid, const struct object_id *compat_oid) { - struct loose_object_map *map = source->loose_map; + struct loose_object_map *map = source->loose->map; int inserted = 0; inserted |= insert_oid_pair(map->to_compat, oid, compat_oid); @@ -65,8 +65,8 @@ static int load_one_loose_object_map(struct repository *repo, struct odb_source struct strbuf buf = STRBUF_INIT, path = STRBUF_INIT; FILE *fp; - if (!source->loose_map) - loose_object_map_init(&source->loose_map); + if (!source->loose->map) + loose_object_map_init(&source->loose->map); if (!source->loose->cache) { ALLOC_ARRAY(source->loose->cache, 1); oidtree_init(source->loose->cache); @@ -125,7 +125,7 @@ int repo_read_loose_object_map(struct repository *repo) int repo_write_loose_object_map(struct repository *repo) { - kh_oid_map_t *map = repo->objects->sources->loose_map->to_compat; + kh_oid_map_t *map = repo->objects->sources->loose->map->to_compat; struct lock_file lock; int fd; khiter_t iter; @@ -231,7 +231,7 @@ int repo_loose_object_map_oid(struct repository *repo, khiter_t pos; for (source = repo->objects->sources; source; source = source->next) { - struct loose_object_map *loose_map = source->loose_map; + struct loose_object_map *loose_map = source->loose->map; if (!loose_map) continue; map = (to == repo->compat_hash_algo) ? diff --git a/object-file.c b/object-file.c index 2b908dc1215..e8877876d77 100644 --- a/object-file.c +++ b/object-file.c @@ -2014,5 +2014,6 @@ void odb_loose_source_free(struct odb_loose_source *loose) if (!loose) return; odb_loose_source_clear_cache(loose); + loose_object_map_clear(&loose->map); free(loose); } diff --git a/object-file.h b/object-file.h index 6cbb4b44352..74bae27612f 100644 --- a/object-file.h +++ b/object-file.h @@ -32,6 +32,9 @@ struct odb_loose_source { */ uint32_t subdir_seen[8]; /* 256 bits */ struct oidtree *cache; + + /* Map between object IDs for loose objects. */ + struct loose_object_map *map; }; struct odb_loose_source *odb_loose_source_new(struct odb_source *source); diff --git a/odb.c b/odb.c index b4196f0b323..96059456f20 100644 --- a/odb.c +++ b/odb.c @@ -370,7 +370,6 @@ static void odb_source_free(struct odb_source *source) { free(source->path); odb_loose_source_free(source->loose); - loose_object_map_clear(&source->loose_map); free(source); } diff --git a/odb.h b/odb.h index ad57193c66a..25fbcd7d951 100644 --- a/odb.h +++ b/odb.h @@ -51,9 +51,6 @@ struct odb_source { /* Private state for loose objects. */ struct odb_loose_source *loose; - /* Map between object IDs for loose objects. */ - struct loose_object_map *loose_map; - /* * private data *
-- 2.51.2.1041.gc1ab5b90ca.dirty