[PATCH 0/6] lockdep enhancements for bcachefs

From: Kent Overstreet
Date: Wed Nov 22 2023 - 18:51:29 EST


This adds:
- lockdep_set_no_check_recursion(), which allows lockdep checking for
bcachefs six locks

bcachefs has a cycle detector for deadlock avoidance; there is no lock
ordering for lockdep to check w.r.t. other btree node locks. However, we
do want held btree node locks to be tracked, and lock ordering to be
checked w.r.t. other locks.

- lock_class_is_held(), which we use for some extra locking assertion

We want to assert e.g. that we're not blocking on IO with btree node
locks held.

Kent Overstreet (6):
locking/lockdep: lock_class_is_held()
locking/lockdep: lockdep_set_no_check_recursion()
bcachefs: Assert that btree node locks aren't being leaked
bcachefs: Use lock_class_is_held() for btree locking asserts
bcachefs: Check for btree locks held on transaction init
bcachefs: Switch to lockdep_set_no_check_recursion()

fs/bcachefs/btree_gc.c | 3 +++
fs/bcachefs/btree_iter.c | 2 ++
fs/bcachefs/btree_locking.c | 14 ++++++++---
fs/bcachefs/btree_types.h | 1 +
include/linux/lockdep.h | 10 ++++++++
include/linux/lockdep_types.h | 2 +-
kernel/locking/lockdep.c | 46 +++++++++++++++++++++++++++++++++++
7 files changed, 73 insertions(+), 5 deletions(-)

--
2.42.0