Merge branch 'jk/index-pack-reduce-recheck' into maint
Disable "have we lost a race with competing repack?" check while receiving a huge object transfer that runs index-pack. * jk/index-pack-reduce-recheck: index-pack: avoid excessive re-reading of pack directory
This commit is contained in:
@ -730,7 +730,7 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
|
|||||||
assert(data || obj_entry);
|
assert(data || obj_entry);
|
||||||
|
|
||||||
read_lock();
|
read_lock();
|
||||||
collision_test_needed = has_sha1_file(sha1);
|
collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK);
|
||||||
read_unlock();
|
read_unlock();
|
||||||
|
|
||||||
if (collision_test_needed && !data) {
|
if (collision_test_needed && !data) {
|
||||||
|
11
cache.h
11
cache.h
@ -901,8 +901,17 @@ extern int has_sha1_pack(const unsigned char *sha1);
|
|||||||
* Return true iff we have an object named sha1, whether local or in
|
* Return true iff we have an object named sha1, whether local or in
|
||||||
* an alternate object database, and whether packed or loose. This
|
* an alternate object database, and whether packed or loose. This
|
||||||
* function does not respect replace references.
|
* function does not respect replace references.
|
||||||
|
*
|
||||||
|
* If the QUICK flag is set, do not re-check the pack directory
|
||||||
|
* when we cannot find the object (this means we may give a false
|
||||||
|
* negative answer if another process is simultaneously repacking).
|
||||||
*/
|
*/
|
||||||
extern int has_sha1_file(const unsigned char *sha1);
|
#define HAS_SHA1_QUICK 0x1
|
||||||
|
extern int has_sha1_file_with_flags(const unsigned char *sha1, int flags);
|
||||||
|
static inline int has_sha1_file(const unsigned char *sha1)
|
||||||
|
{
|
||||||
|
return has_sha1_file_with_flags(sha1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return true iff an alternate object database has a loose object
|
* Return true iff an alternate object database has a loose object
|
||||||
|
@ -3084,7 +3084,7 @@ int has_sha1_pack(const unsigned char *sha1)
|
|||||||
return find_pack_entry(sha1, &e);
|
return find_pack_entry(sha1, &e);
|
||||||
}
|
}
|
||||||
|
|
||||||
int has_sha1_file(const unsigned char *sha1)
|
int has_sha1_file_with_flags(const unsigned char *sha1, int flags)
|
||||||
{
|
{
|
||||||
struct pack_entry e;
|
struct pack_entry e;
|
||||||
|
|
||||||
@ -3092,6 +3092,8 @@ int has_sha1_file(const unsigned char *sha1)
|
|||||||
return 1;
|
return 1;
|
||||||
if (has_loose_object(sha1))
|
if (has_loose_object(sha1))
|
||||||
return 1;
|
return 1;
|
||||||
|
if (flags & HAS_SHA1_QUICK)
|
||||||
|
return 0;
|
||||||
reprepare_packed_git();
|
reprepare_packed_git();
|
||||||
return find_pack_entry(sha1, &e);
|
return find_pack_entry(sha1, &e);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user