summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_update.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-02-26 17:35:47 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2020-02-26 19:12:07 -0500
commitdbb99e492daa3ffe623685f3871dfcb97c01cd4f (patch)
treedde888ef9b2163678336f7803be970ba6a3ce8df /libbcachefs/btree_update.h
parentac0d08877aa87a9cdf493bc6f336c391fb4e04a0 (diff)
Update bcachefs sources to 1210f6c925 bcachefs: BCH_SB_FEATURES_ALL
Diffstat (limited to 'libbcachefs/btree_update.h')
-rw-r--r--libbcachefs/btree_update.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/libbcachefs/btree_update.h b/libbcachefs/btree_update.h
index be4fe81..d1cd839 100644
--- a/libbcachefs/btree_update.h
+++ b/libbcachefs/btree_update.h
@@ -59,6 +59,7 @@ enum btree_insert_flags {
int bch2_btree_delete_at(struct btree_trans *, struct btree_iter *, unsigned);
+int __bch2_btree_insert(struct btree_trans *, enum btree_id, struct bkey_i *);
int bch2_btree_insert(struct bch_fs *, enum btree_id, struct bkey_i *,
struct disk_reservation *, u64 *, int flags);
@@ -98,17 +99,17 @@ static inline int bch2_trans_commit(struct btree_trans *trans,
return __bch2_trans_commit(trans);
}
-#define __bch2_trans_do(_trans, _disk_res, _journal_seq, \
- _flags, _reset_flags, _do) \
+#define __bch2_trans_do(_trans, _disk_res, _journal_seq, _flags, _do) \
({ \
int _ret; \
\
- do { \
- bch2_trans_reset(_trans, _reset_flags); \
- \
+ while (1) { \
_ret = (_do) ?: bch2_trans_commit(_trans, (_disk_res), \
(_journal_seq), (_flags)); \
- } while (_ret == -EINTR); \
+ if (_ret != -EINTR) \
+ break; \
+ bch2_trans_reset(_trans, 0); \
+ } \
\
_ret; \
})
@@ -120,7 +121,7 @@ static inline int bch2_trans_commit(struct btree_trans *trans,
\
bch2_trans_init(&trans, (_c), 0, 0); \
_ret = __bch2_trans_do(&trans, _disk_res, _journal_seq, _flags, \
- TRANS_RESET_MEM|TRANS_RESET_ITERS, _do); \
+ _do); \
_ret2 = bch2_trans_exit(&trans); \
\
_ret ?: _ret2; \