diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-01 03:38:05 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-09 00:29:23 +0300 |
commit | 8783856ab15e9ad6faea8df3b72658f4cd2325c3 (patch) | |
tree | ab3e02aaab6048b014df389c5c061fb57d1b9d02 /fs/bcachefs/sb-members.h | |
parent | dbd0408087853c7842aa21f58f99d395eff02544 (diff) | |
download | linux-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.h | 7 |
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(): |