summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_update.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-04-13 10:24:08 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-04-13 10:24:15 -0400
commit967c8704989f6194dc40ea884b5d0f713d4fb74c (patch)
treed4a317ed7405e3f4174604a6c5450d44e98af923 /libbcachefs/btree_update.h
parentb422ff58ba8eedcfef3b67b66468660f07b0cfc1 (diff)
Update bcachefs sources to 8eca47e4d5 bcachefs: Improved check_directory_structure()
Diffstat (limited to 'libbcachefs/btree_update.h')
-rw-r--r--libbcachefs/btree_update.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/libbcachefs/btree_update.h b/libbcachefs/btree_update.h
index 4ce12ae2..0c7caa7e 100644
--- a/libbcachefs/btree_update.h
+++ b/libbcachefs/btree_update.h
@@ -103,13 +103,12 @@ 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, _do) \
+#define lockrestart_do(_trans, _do) \
({ \
int _ret; \
\
while (1) { \
- _ret = (_do) ?: bch2_trans_commit(_trans, (_disk_res), \
- (_journal_seq), (_flags)); \
+ _ret = (_do); \
if (_ret != -EINTR) \
break; \
bch2_trans_reset(_trans, 0); \
@@ -118,6 +117,10 @@ static inline int bch2_trans_commit(struct btree_trans *trans,
_ret; \
})
+#define __bch2_trans_do(_trans, _disk_res, _journal_seq, _flags, _do) \
+ lockrestart_do(_trans, _do ?: bch2_trans_commit(_trans, (_disk_res),\
+ (_journal_seq), (_flags)))
+
#define bch2_trans_do(_c, _disk_res, _journal_seq, _flags, _do) \
({ \
struct btree_trans trans; \