diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-07-12 23:30:45 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:08:07 -0400 |
commit | 1c7a0adf3112090c42ef93ac84aad97bf4d414d3 (patch) | |
tree | 3a431a138e126ce0950c6f5f54813e692cb437a7 /fs/bcachefs/btree_iter.h | |
parent | d69f41d6bbd7849253cd823525543bd3a1a307f1 (diff) | |
download | lwn-1c7a0adf3112090c42ef93ac84aad97bf4d414d3.tar.gz lwn-1c7a0adf3112090c42ef93ac84aad97bf4d414d3.zip |
bcachefs: trace transaction restarts
exceptionally crappy "tracing", but it's a start at documenting the
places restarts can be triggered
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_iter.h')
-rw-r--r-- | fs/bcachefs/btree_iter.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h index e686a7ad5b3d..315cba28f6b2 100644 --- a/fs/bcachefs/btree_iter.h +++ b/fs/bcachefs/btree_iter.h @@ -305,10 +305,31 @@ bch2_trans_copy_iter(struct btree_trans *trans, struct btree_iter *src) return __bch2_trans_copy_iter(trans, src, __btree_iter_id()); } +void __bch2_trans_begin(struct btree_trans *); + void *bch2_trans_kmalloc(struct btree_trans *, size_t); int bch2_trans_unlock(struct btree_trans *); -void bch2_trans_begin(struct btree_trans *); void bch2_trans_init(struct btree_trans *, struct bch_fs *); int bch2_trans_exit(struct btree_trans *); +#ifdef TRACE_TRANSACTION_RESTARTS +#define bch2_trans_begin(_trans) \ +do { \ + if (is_power_of_2((_trans)->nr_restarts) && \ + (_trans)->nr_restarts >= 8) \ + pr_info("nr restarts: %zu", (_trans)->nr_restarts); \ + \ + (_trans)->nr_restarts++; \ + __bch2_trans_begin(_trans); \ +} while (0) +#else +#define bch2_trans_begin(_trans) __bch2_trans_begin(_trans) +#endif + +#ifdef TRACE_TRANSACTION_RESTARTS_ALL +#define trans_restart(...) pr_info("transaction restart" __VA_ARGS__) +#else +#define trans_restart(...) no_printk("transaction restart" __VA_ARGS__) +#endif + #endif /* _BCACHEFS_BTREE_ITER_H */ |