Instead, change the callers of `commit_packed_refs()` to call `packed_refs_unlock()`. Signed-off-by: Michael Haggerty <mhagger@xxxxxxxxxxxx> --- refs/files-backend.c | 2 ++ refs/packed-backend.c | 18 ++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 802ed9e2e9..09dad2806e 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1119,6 +1119,7 @@ static int files_pack_refs(struct ref_store *ref_store, unsigned int flags) if (commit_packed_refs(refs->packed_ref_store, &err)) die("unable to overwrite old ref-pack file: %s", err.buf); + packed_refs_unlock(refs->packed_ref_store); prune_refs(refs, refs_to_prune); strbuf_release(&err); @@ -2687,6 +2688,7 @@ static int files_initial_transaction_commit(struct ref_store *ref_store, } cleanup: + packed_refs_unlock(refs->packed_ref_store); transaction->state = REF_TRANSACTION_CLOSED; string_list_clear(&affected_refnames, 0); return ret; diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 1732e3aad4..54b48d1f02 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -606,7 +606,6 @@ int commit_packed_refs(struct ref_store *ref_store, struct strbuf *err) struct packed_ref_cache *packed_ref_cache = get_packed_ref_cache(refs); int ok; - int ret = -1; struct strbuf sb = STRBUF_INIT; FILE *out; struct ref_iterator *iter; @@ -619,7 +618,7 @@ int commit_packed_refs(struct ref_store *ref_store, struct strbuf *err) strbuf_addf(err, "unable to create file %s: %s", sb.buf, strerror(errno)); strbuf_release(&sb); - goto out; + return -1; } strbuf_release(&sb); @@ -660,18 +659,14 @@ int commit_packed_refs(struct ref_store *ref_store, struct strbuf *err) if (rename_tempfile(&refs->tempfile, refs->path)) { strbuf_addf(err, "error replacing %s: %s", refs->path, strerror(errno)); - goto out; + return -1; } - ret = 0; - goto out; + return 0; error: delete_tempfile(&refs->tempfile); - -out: - packed_refs_unlock(ref_store); - return ret; + return -1; } /* @@ -705,6 +700,7 @@ int repack_without_refs(struct ref_store *ref_store, struct ref_dir *packed; struct string_list_item *refname; int needs_repacking = 0, removed = 0; + int ret; packed_assert_main_repository(refs, "repack_without_refs"); assert(err); @@ -740,7 +736,9 @@ int repack_without_refs(struct ref_store *ref_store, } /* Write what remains */ - return commit_packed_refs(&refs->base, err); + ret = commit_packed_refs(&refs->base, err); + packed_refs_unlock(ref_store); + return ret; } static int packed_init_db(struct ref_store *ref_store, struct strbuf *err) -- 2.11.0