mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 04:28:10 -04:00
bcachefs: btree_trans_too_many_iters() is now a transaction restart
All transaction restarts need a tracepoint - this is essential for debugging Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
committed by
Kent Overstreet
parent
90cecb921c
commit
0990efaeea
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "bset.h"
|
||||
#include "btree_types.h"
|
||||
#include "trace.h"
|
||||
|
||||
static inline void __btree_path_get(struct btree_path *path, bool intent)
|
||||
{
|
||||
@@ -384,8 +385,12 @@ static inline struct bkey_s_c bch2_btree_iter_peek_upto_type(struct btree_iter *
|
||||
|
||||
static inline int btree_trans_too_many_iters(struct btree_trans *trans)
|
||||
{
|
||||
return hweight64(trans->paths_allocated) > BTREE_ITER_MAX / 2
|
||||
? -EINTR : 0;
|
||||
if (hweight64(trans->paths_allocated) > BTREE_ITER_MAX / 2) {
|
||||
trace_trans_restart_too_many_iters(trans->fn, _THIS_IP_);
|
||||
return btree_trans_restart(trans);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline struct bkey_s_c
|
||||
|
||||
@@ -755,6 +755,12 @@ DEFINE_EVENT(transaction_event, trans_restart_key_cache_raced,
|
||||
TP_ARGS(trans_fn, caller_ip)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(transaction_event, trans_restart_too_many_iters,
|
||||
TP_PROTO(const char *trans_fn,
|
||||
unsigned long caller_ip),
|
||||
TP_ARGS(trans_fn, caller_ip)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(transaction_restart_iter,
|
||||
TP_PROTO(const char *trans_fn,
|
||||
unsigned long caller_ip,
|
||||
|
||||
Reference in New Issue
Block a user