object-store: factor out odb_loose_cache()
Add and use a function for loading the entries of a loose object subdirectory for a given object ID. It frees callers from deriving the fanout key; they can use the returned oid_array reference for lookups or forward range scans. Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
ecbdaf0899
commit
0000d6543f
12
sha1-file.c
12
sha1-file.c
@ -924,7 +924,6 @@ static int open_sha1_file(struct repository *r,
|
||||
static int quick_has_loose(struct repository *r,
|
||||
const unsigned char *sha1)
|
||||
{
|
||||
int subdir_nr = sha1[0];
|
||||
struct object_id oid;
|
||||
struct object_directory *odb;
|
||||
|
||||
@ -932,8 +931,7 @@ static int quick_has_loose(struct repository *r,
|
||||
|
||||
prepare_alt_odb(r);
|
||||
for (odb = r->objects->odb; odb; odb = odb->next) {
|
||||
odb_load_loose_cache(odb, subdir_nr);
|
||||
if (oid_array_lookup(&odb->loose_objects_cache, &oid) >= 0)
|
||||
if (oid_array_lookup(odb_loose_cache(odb, &oid), &oid) >= 0)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@ -2152,6 +2150,14 @@ static int append_loose_object(const struct object_id *oid, const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct oid_array *odb_loose_cache(struct object_directory *odb,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
int subdir_nr = oid->hash[0];
|
||||
odb_load_loose_cache(odb, subdir_nr);
|
||||
return &odb->loose_objects_cache;
|
||||
}
|
||||
|
||||
void odb_load_loose_cache(struct object_directory *odb, int subdir_nr)
|
||||
{
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
|
Reference in New Issue
Block a user