From 60b5538877a2d34396280615484b995911e09b69 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 9 Feb 2023 14:48:54 -0500 Subject: [PATCH] bcachefs: trans->notrace_relock_fail When we unlock in order to submit IO, the next relock event is likely to fail if submit_bio() blocked - we shouldn't those events in our _fail stats, since those are expected events and shouldn't cause test failures. Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_iter.c | 4 +++- fs/bcachefs/btree_locking.c | 2 +- fs/bcachefs/btree_types.h | 1 + fs/bcachefs/io.c | 6 ++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 7bb7b5ffe0019..21f12e5223608 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -2854,8 +2854,10 @@ u32 bch2_trans_begin(struct btree_trans *trans) bch2_trans_reset_srcu_lock(trans); trans->last_restarted_ip = _RET_IP_; - if (trans->restarted) + if (trans->restarted) { bch2_btree_path_traverse_all(trans); + trans->notrace_relock_fail = false; + } trans->last_begin_time = local_clock(); return trans->restart_count; diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c index 56489e7b0ac25..cf138cd9d4319 100644 --- a/fs/bcachefs/btree_locking.c +++ b/fs/bcachefs/btree_locking.c @@ -473,7 +473,7 @@ bool __bch2_btree_node_relock(struct btree_trans *trans, return true; } fail: - if (trace) + if (trace && !trans->notrace_relock_fail) trace_and_count(trans->c, btree_path_relock_fail, trans, _RET_IP_, path, level); return false; } diff --git a/fs/bcachefs/btree_types.h b/fs/bcachefs/btree_types.h index 5660d076c678c..a815cd5a072ed 100644 --- a/fs/bcachefs/btree_types.h +++ b/fs/bcachefs/btree_types.h @@ -425,6 +425,7 @@ struct btree_trans { bool memory_allocation_failure:1; bool journal_transaction_names:1; bool journal_replay_not_finished:1; + bool notrace_relock_fail:1; enum bch_errcode restarted:16; u32 restart_count; unsigned long last_restarted_ip; diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c index bd55c4b41d7cf..b57187ce1f653 100644 --- a/fs/bcachefs/io.c +++ b/fs/bcachefs/io.c @@ -2375,6 +2375,12 @@ get_bio: else submit_bio_wait(&rbio->bio); } + + /* + * We just submitted IO which may block, we expect relock fail + * events and shouldn't count them: + */ + trans->notrace_relock_fail = true; } else { /* Attempting reconstruct read: */ if (bch2_ec_read_extent(c, rbio)) { -- 2.30.2