summaryrefslogtreecommitdiff
path: root/fs/bcachefs/sb-members.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-05-01 03:38:05 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2024-05-09 00:29:23 +0300
commit8783856ab15e9ad6faea8df3b72658f4cd2325c3 (patch)
treeab3e02aaab6048b014df389c5c061fb57d1b9d02 /fs/bcachefs/sb-members.h
parentdbd0408087853c7842aa21f58f99d395eff02544 (diff)
downloadlinux-8783856ab15e9ad6faea8df3b72658f4cd2325c3.tar.xz
bcachefs: ob_dev()
Wrapper around bch2_dev_have_ref() for open_buckets; we do guarantee that the device an open_bucket points to exists. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/sb-members.h')
-rw-r--r--fs/bcachefs/sb-members.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/bcachefs/sb-members.h b/fs/bcachefs/sb-members.h
index d6d391dc21ca..a3ba1ddebe4d 100644
--- a/fs/bcachefs/sb-members.h
+++ b/fs/bcachefs/sb-members.h
@@ -195,6 +195,13 @@ static inline bool bucket_valid(const struct bch_dev *ca, u64 b)
return b - ca->mi.first_bucket < ca->mi.nbuckets_minus_first;
}
+static inline struct bch_dev *bch2_dev_have_ref(const struct bch_fs *c, unsigned dev)
+{
+ EBUG_ON(!bch2_dev_exists(c, dev));
+
+ return rcu_dereference_check(c->devs[dev], 1);
+}
+
/*
* If a key exists that references a device, the device won't be going away and
* we can omit rcu_read_lock():