[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250420155918.749455-1-kent.overstreet@linux.dev>
Date: Sun, 20 Apr 2025 11:59:13 -0400
From: Kent Overstreet <kent.overstreet@...ux.dev>
To: linux-bcachefs@...r.kernel.org,
linux-fsdevel@...r.kernel.org,
linux-hardening@...r.kernel.org,
linux-kernel@...r.kernel.org
Cc: Kent Overstreet <kent.overstreet@...ux.dev>
Subject: [PATCH 0/3] enumarated refcounts, for debugging refcount issues
Not sure we have a list for library code, but this might be of interest
to anyone who's had to debug refcount issues on refs with lots of users
(filesystem people), and I know the hardening folks deal with refcounts
a lot.
In release mode, this is just a wrapper around percpu refcounts.
In debug mode, this provides separate sub-refcounts for each enumerated
user, and provides facilities for printing them.
Meaning, if you're debugging a refcount issue, you no longer have to go
searching through the entire codebase - it'll tell you the exact
codepath.
bcachefs patches are provided as example usage, for other subsystems.
Kent Overstreet (3):
bcachefs: enumerated_ref.c
bcachefs: bch_fs.writes -> enumerated_refs
bcachefs: bch_dev.io_ref -> enumerated_ref
fs/bcachefs/Makefile | 1 +
fs/bcachefs/alloc_background.c | 41 ++++----
fs/bcachefs/backpointers.c | 6 +-
fs/bcachefs/bcachefs.h | 105 ++++++++++----------
fs/bcachefs/btree_gc.c | 7 +-
fs/bcachefs/btree_io.c | 29 +++---
fs/bcachefs/btree_node_scan.c | 10 +-
fs/bcachefs/btree_trans_commit.c | 5 +-
fs/bcachefs/btree_update_interior.c | 7 +-
fs/bcachefs/btree_write_buffer.c | 11 ++-
fs/bcachefs/buckets.c | 4 +-
fs/bcachefs/debug.c | 12 ++-
fs/bcachefs/ec.c | 32 ++++---
fs/bcachefs/enumerated_ref.c | 144 ++++++++++++++++++++++++++++
fs/bcachefs/enumerated_ref.h | 66 +++++++++++++
fs/bcachefs/enumerated_ref_types.h | 19 ++++
fs/bcachefs/fs-io-direct.c | 7 +-
fs/bcachefs/fs-io.c | 15 +--
fs/bcachefs/io_read.c | 17 ++--
fs/bcachefs/io_write.c | 20 ++--
fs/bcachefs/journal.c | 10 +-
fs/bcachefs/journal_io.c | 15 +--
fs/bcachefs/journal_reclaim.c | 2 +-
fs/bcachefs/reflink.c | 5 +-
fs/bcachefs/sb-members.h | 32 ++++---
fs/bcachefs/snapshot.c | 7 +-
fs/bcachefs/subvolume.c | 7 +-
fs/bcachefs/super-io.c | 18 ++--
fs/bcachefs/super.c | 125 +++++++++++-------------
fs/bcachefs/super.h | 3 +
fs/bcachefs/sysfs.c | 46 ++++-----
31 files changed, 540 insertions(+), 288 deletions(-)
create mode 100644 fs/bcachefs/enumerated_ref.c
create mode 100644 fs/bcachefs/enumerated_ref.h
create mode 100644 fs/bcachefs/enumerated_ref_types.h
--
2.49.0
Powered by blists - more mailing lists