• Kent Overstreet's avatar
    bcachefs: Add lockdep support for btree node locks · 375476c4
    Kent Overstreet authored
    This adds lockdep tracking for held btree locks with a single dep_map in
    btree_trans, i.e. tracking all held btree locks as one object.
    
    This is more practical and more useful than having lockdep track held
    btree locks individually, because
     - we can take more locks than lockdep can track (unbounded, now that we
       have dynamically resizable btree paths)
     - there's no lock ordering between btree locks for lockdep to track (we
       do cycle detection)
     - and this makes it easy to teach lockdep that btree locks are not safe
       to hold while invoking memory reclaim.
    
    The last rule is one that lockdep would never learn, because we only do
    trylock() from within shrinkers - but we very much do not want to be
    invoking memory reclaim while holding btree node locks.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    375476c4
btree_locking.h 12.7 KB