mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
object-file: move loose object cache into loose source
Our loose objects use a cache that (optionally) stores all objects for each of the opened sharding directories. This cache is located in the `struct odb_source`, but now that we have `struct odb_source_loose` it makes sense to move it into the latter structure so that all state that relates to loose objects is entirely self-contained. Do so. While at it, rename corresponding functions to have a prefix that relates to `struct odb_source_loose`. Note that despite this prefix, the functions still accept a `struct odb_source` as input. This is done intentionally: once we introduce pluggable object databases, we will continue to accept this struct but then do a cast inside these functions to `struct odb_source_loose`. This design is similar to how we do it for our ref backends. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
ece43d9dc7
commit
90a93f9dea
@@ -20,6 +20,18 @@ struct odb_source;
|
||||
|
||||
struct odb_source_loose {
|
||||
struct odb_source *source;
|
||||
|
||||
/*
|
||||
* Used to store the results of readdir(3) calls when we are OK
|
||||
* sacrificing accuracy due to races for speed. That includes
|
||||
* object existence with OBJECT_INFO_QUICK, as well as
|
||||
* our search for unique abbreviated hashes. Don't use it for tasks
|
||||
* requiring greater accuracy!
|
||||
*
|
||||
* Be sure to call odb_load_loose_cache() before using.
|
||||
*/
|
||||
uint32_t subdir_seen[8]; /* 256 bits */
|
||||
struct oidtree *cache;
|
||||
};
|
||||
|
||||
struct odb_source_loose *odb_source_loose_new(struct odb_source *source);
|
||||
@@ -29,8 +41,8 @@ void odb_source_loose_free(struct odb_source_loose *loose);
|
||||
* Populate and return the loose object cache array corresponding to the
|
||||
* given object ID.
|
||||
*/
|
||||
struct oidtree *odb_loose_cache(struct odb_source *source,
|
||||
const struct object_id *oid);
|
||||
struct oidtree *odb_source_loose_cache(struct odb_source *source,
|
||||
const struct object_id *oid);
|
||||
|
||||
/* Empty the loose object cache for the specified object directory. */
|
||||
void odb_clear_loose_cache(struct odb_source *source);
|
||||
|
||||
Reference in New Issue
Block a user