On Feb 11, 2025, at 00:28, Kent Overstreet <kent.overstr...@linux.dev> wrote: > > On Mon, Feb 10, 2025 at 11:04:22AM +0800, Alan Huang wrote: >> acc->k.data should be used with the lock hold: > > <snipped> > >> >> Signed-off-by: Alan Huang <mmpgour...@gmail.com> > > > Test this with lockdep (you know how to edit the lists of tests the CI > runs, right?
The lockdep test group is in the tests lists. Or you mean add tests in the lockdep group ? > > mark_lock usage is a giant mess, and calling percpu_down_read() > recursively by accident will mostly work, until it doesn't. > >> --- >> fs/bcachefs/disk_accounting.h | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/fs/bcachefs/disk_accounting.h b/fs/bcachefs/disk_accounting.h >> index 5360cbb3ec29..f4372cafea2e 100644 >> --- a/fs/bcachefs/disk_accounting.h >> +++ b/fs/bcachefs/disk_accounting.h >> @@ -210,11 +210,13 @@ static inline void >> bch2_accounting_mem_read_counters(struct bch_accounting_mem * >> static inline void bch2_accounting_mem_read(struct bch_fs *c, struct bpos p, >> u64 *v, unsigned nr) >> { >> + percpu_down_read(&c->mark_lock); >> struct bch_accounting_mem *acc = &c->accounting; >> unsigned idx = eytzinger0_find(acc->k.data, acc->k.nr, >> sizeof(acc->k.data[0]), >> accounting_pos_cmp, &p); >> >> bch2_accounting_mem_read_counters(acc, idx, v, nr, false); >> + percpu_up_read(&c->mark_lock); >> } >> >> static inline struct bversion journal_pos_to_bversion(struct journal_res >> *res, unsigned offset) >> -- >> 2.47.0 >>