summaryrefslogtreecommitdiff
path: root/fs/bcachefs/extents.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-05-01 04:12:46 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2024-05-09 00:29:23 +0300
commit9cadb4ea56d4d961ba0efd47321905b3fda1c664 (patch)
tree52c372bc07de09fe5a362b53c66df962e229946b /fs/bcachefs/extents.c
parent8e3cc2003fd55f32b82c2a06ae7f0bd28b938bd7 (diff)
downloadlinux-9cadb4ea56d4d961ba0efd47321905b3fda1c664.tar.xz
bcachefs: bch2_extent_normalize() -> bch2_dev_rcu()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/extents.c')
-rw-r--r--fs/bcachefs/extents.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c
index 52e79b87b485..7b889f93878b 100644
--- a/fs/bcachefs/extents.c
+++ b/fs/bcachefs/extents.c
@@ -986,9 +986,14 @@ void bch2_extent_ptr_set_cached(struct bkey_s k, struct bch_extent_ptr *ptr)
*/
bool bch2_extent_normalize(struct bch_fs *c, struct bkey_s k)
{
+ struct bch_dev *ca;
+
+ rcu_read_lock();
bch2_bkey_drop_ptrs(k, ptr,
ptr->cached &&
- dev_ptr_stale(bch2_dev_bkey_exists(c, ptr->dev), ptr));
+ (ca = bch2_dev_rcu(c, ptr->dev)) &&
+ dev_ptr_stale_rcu(ca, ptr));
+ rcu_read_unlock();
return bkey_deleted(k.k);
}