Hi, this is the fourth version of my patch series that implements for graceful concurrent writes with the reftable backend. There's only a single change, namely a fix to the type used by the newly introduced `flags` field. Thanks! Patrick Patrick Steinhardt (3): refs/reftable: introduce "reftable.lockTimeout" reftable/stack: allow locking of outdated stacks refs/reftable: reload locked stack when preparing transaction Documentation/config/reftable.txt | 8 ++++ refs/reftable-backend.c | 13 +++++- reftable/reftable-stack.h | 13 +++++- reftable/reftable-writer.h | 11 +++++ reftable/stack.c | 38 ++++++++++++------ t/t0610-reftable-basics.sh | 58 ++++++++++++++++++++++++++ t/unit-tests/t-reftable-stack.c | 67 ++++++++++++++++++++++++++++++- 7 files changed, 189 insertions(+), 19 deletions(-) Range-diff against v3: 1: 77cffd3b1eb = 1: 77cffd3b1eb refs/reftable: introduce "reftable.lockTimeout" 2: 6130565498e ! 2: 81a836062e9 reftable/stack: allow locking of outdated stacks @@ reftable/reftable-stack.h: uint64_t reftable_stack_next_update_index(struct reft int reftable_stack_new_addition(struct reftable_addition **dest, - struct reftable_stack *st); + struct reftable_stack *st, -+ int flags); ++ unsigned int flags); /* Adds a reftable to transaction. */ int reftable_addition_add(struct reftable_addition *add, @@ reftable/stack.c: struct reftable_addition { static int reftable_stack_init_addition(struct reftable_addition *add, - struct reftable_stack *st) + struct reftable_stack *st, -+ int flags) ++ unsigned int flags) { struct strbuf lock_file_name = STRBUF_INIT; int err; @@ reftable/stack.c: int reftable_addition_commit(struct reftable_addition *add) int reftable_stack_new_addition(struct reftable_addition **dest, - struct reftable_stack *st) + struct reftable_stack *st, -+ int flags) ++ unsigned int flags) { int err = 0; struct reftable_addition empty = REFTABLE_ADDITION_INIT; 3: 25d4e513a36 = 3: 9ce2d18dff2 refs/reftable: reload locked stack when preparing transaction -- 2.46.0.551.gc5ee8f2d1c.dirty