summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/buckets.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-03-29 23:11:08 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-04-02 10:24:34 -0400
commitdcffc3b1ae3251d796a25c673f614e3099ca83d3 (patch)
tree7b5a5ada3f5ca8e5bda8ab38a396f2c3730fd792 /fs/bcachefs/buckets.c
parentbcachefs: fix ref leak in btree_node_read_all_replicas (diff)
downloadlinux-dcffc3b1ae3251d796a25c673f614e3099ca83d3.tar.gz
linux-dcffc3b1ae3251d796a25c673f614e3099ca83d3.zip
bcachefs: Split up bch_dev.io_ref
We now have separate per device io_refs for read and write access. This fixes a device removal bug where the discard workers were still running while we're removing alloc info for that device. It's also a bit of hardening; we no longer allow writes to devices that are read-only. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/buckets.c')
-rw-r--r--fs/bcachefs/buckets.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index 297adb996751..cd4f5de82566 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -1132,7 +1132,7 @@ int bch2_trans_mark_dev_sbs_flags(struct bch_fs *c,
for_each_online_member(c, ca) {
int ret = bch2_trans_mark_dev_sb(c, ca, flags);
if (ret) {
- percpu_ref_put(&ca->io_ref);
+ percpu_ref_put(&ca->io_ref[READ]);
return ret;
}
}