Skip to content

Commit 00c2c50

Browse files
committed
Merge branch 'ps/reftable-libgit2-cleanup'
Code clean-ups. * ps/reftable-libgit2-cleanup: refs/reftable: always reload stacks when creating lock reftable: don't second-guess errors from flock interface reftable/stack: handle outdated stacks when compacting reftable/stack: allow passing flags to `reftable_stack_add()` reftable/stack: fix compiler warning due to missing braces reftable/stack: reorder code to avoid forward declarations reftable/writer: drop Git-specific `QSORT()` macro reftable/writer: fix type used for number of records
2 parents 96a04c4 + 16684b6 commit 00c2c50

File tree

8 files changed

+280
-283
lines changed

8 files changed

+280
-283
lines changed

refs/reftable-backend.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,10 +1012,6 @@ static int prepare_transaction_update(struct write_transaction_table_arg **out,
10121012
if (!arg) {
10131013
struct reftable_addition *addition;
10141014

1015-
ret = reftable_stack_reload(be->stack);
1016-
if (ret)
1017-
return ret;
1018-
10191015
ret = reftable_stack_new_addition(&addition, be->stack,
10201016
REFTABLE_STACK_NEW_ADDITION_RELOAD);
10211017
if (ret) {
@@ -1974,7 +1970,8 @@ static int reftable_be_rename_ref(struct ref_store *ref_store,
19741970
ret = backend_for(&arg.be, refs, newrefname, &newrefname, 1);
19751971
if (ret)
19761972
goto done;
1977-
ret = reftable_stack_add(arg.be->stack, &write_copy_table, &arg);
1973+
ret = reftable_stack_add(arg.be->stack, &write_copy_table, &arg,
1974+
REFTABLE_STACK_NEW_ADDITION_RELOAD);
19781975

19791976
done:
19801977
assert(ret != REFTABLE_API_ERROR);
@@ -2003,7 +2000,8 @@ static int reftable_be_copy_ref(struct ref_store *ref_store,
20032000
ret = backend_for(&arg.be, refs, newrefname, &newrefname, 1);
20042001
if (ret)
20052002
goto done;
2006-
ret = reftable_stack_add(arg.be->stack, &write_copy_table, &arg);
2003+
ret = reftable_stack_add(arg.be->stack, &write_copy_table, &arg,
2004+
REFTABLE_STACK_NEW_ADDITION_RELOAD);
20072005

20082006
done:
20092007
assert(ret != REFTABLE_API_ERROR);
@@ -2375,7 +2373,8 @@ static int reftable_be_create_reflog(struct ref_store *ref_store,
23752373
goto done;
23762374
arg.stack = be->stack;
23772375

2378-
ret = reftable_stack_add(be->stack, &write_reflog_existence_table, &arg);
2376+
ret = reftable_stack_add(be->stack, &write_reflog_existence_table, &arg,
2377+
REFTABLE_STACK_NEW_ADDITION_RELOAD);
23792378

23802379
done:
23812380
return ret;
@@ -2446,7 +2445,8 @@ static int reftable_be_delete_reflog(struct ref_store *ref_store,
24462445
return ret;
24472446
arg.stack = be->stack;
24482447

2449-
ret = reftable_stack_add(be->stack, &write_reflog_delete_table, &arg);
2448+
ret = reftable_stack_add(be->stack, &write_reflog_delete_table, &arg,
2449+
REFTABLE_STACK_NEW_ADDITION_RELOAD);
24502450

24512451
assert(ret != REFTABLE_API_ERROR);
24522452
return ret;
@@ -2567,15 +2567,16 @@ static int reftable_be_reflog_expire(struct ref_store *ref_store,
25672567
if (ret < 0)
25682568
goto done;
25692569

2570-
ret = reftable_stack_init_log_iterator(be->stack, &it);
2570+
ret = reftable_stack_new_addition(&add, be->stack,
2571+
REFTABLE_STACK_NEW_ADDITION_RELOAD);
25712572
if (ret < 0)
25722573
goto done;
25732574

2574-
ret = reftable_iterator_seek_log(&it, refname);
2575+
ret = reftable_stack_init_log_iterator(be->stack, &it);
25752576
if (ret < 0)
25762577
goto done;
25772578

2578-
ret = reftable_stack_new_addition(&add, be->stack, 0);
2579+
ret = reftable_iterator_seek_log(&it, refname);
25792580
if (ret < 0)
25802581
goto done;
25812582

reftable/reftable-stack.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,15 @@ int reftable_addition_commit(struct reftable_addition *add);
6868
* transaction. Releases the lock if held. */
6969
void reftable_addition_destroy(struct reftable_addition *add);
7070

71-
/* add a new table to the stack. The write_table function must call
72-
* reftable_writer_set_limits, add refs and return an error value. */
71+
/*
72+
* Add a new table to the stack. The write_table function must call
73+
* reftable_writer_set_limits, add refs and return an error value.
74+
* The flags are passed through to `reftable_stack_new_addition()`.
75+
*/
7376
int reftable_stack_add(struct reftable_stack *st,
7477
int (*write_table)(struct reftable_writer *wr,
7578
void *write_arg),
76-
void *write_arg);
79+
void *write_arg, unsigned flags);
7780

7881
struct reftable_iterator;
7982

reftable/reftable-writer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ int reftable_writer_add_ref(struct reftable_writer *w,
156156
the records before adding them, reordering the records array passed in.
157157
*/
158158
int reftable_writer_add_refs(struct reftable_writer *w,
159-
struct reftable_ref_record *refs, int n);
159+
struct reftable_ref_record *refs, size_t n);
160160

161161
/*
162162
adds reftable_log_records. Log records are keyed by (refname, decreasing
@@ -171,7 +171,7 @@ int reftable_writer_add_log(struct reftable_writer *w,
171171
the records before adding them, reordering records array passed in.
172172
*/
173173
int reftable_writer_add_logs(struct reftable_writer *w,
174-
struct reftable_log_record *logs, int n);
174+
struct reftable_log_record *logs, size_t n);
175175

176176
/* reftable_writer_close finalizes the reftable. The writer is retained so
177177
* statistics can be inspected. */

0 commit comments

Comments
 (0)