diff options
Diffstat (limited to 'refs')
-rw-r--r-- | refs/files-backend.c | 8 | ||||
-rw-r--r-- | refs/refs-internal.h | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/refs/files-backend.c b/refs/files-backend.c index 0404f2c233..d611e0f7d7 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -855,7 +855,9 @@ retry: if (!lock->lk) lock->lk = xcalloc(1, sizeof(struct lock_file)); - if (hold_lock_file_for_update(lock->lk, ref_file.buf, LOCK_NO_DEREF) < 0) { + if (hold_lock_file_for_update_timeout( + lock->lk, ref_file.buf, LOCK_NO_DEREF, + get_files_ref_lock_timeout_ms()) < 0) { if (errno == ENOENT && --attempts_remaining > 0) { /* * Maybe somebody just deleted one of the @@ -1181,7 +1183,9 @@ static int create_reflock(const char *path, void *cb) { struct lock_file *lk = cb; - return hold_lock_file_for_update(lk, path, LOCK_NO_DEREF) < 0 ? -1 : 0; + return hold_lock_file_for_update_timeout( + lk, path, LOCK_NO_DEREF, + get_files_ref_lock_timeout_ms()) < 0 ? -1 : 0; } /* diff --git a/refs/refs-internal.h b/refs/refs-internal.h index 192f9f85c9..9977fea98b 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h @@ -62,6 +62,12 @@ #define REF_DELETED_LOOSE 0x200 /* + * Return the length of time to retry acquiring a loose reference lock + * before giving up, in milliseconds: + */ +long get_files_ref_lock_timeout_ms(void); + +/* * Return true iff refname is minimally safe. "Safe" here means that * deleting a loose reference by this name will not do any damage, for * example by causing a file that is not a reference to be deleted. |