aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-04-30 21:12:46 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-05-08 17:29:23 -0400
commit9cadb4ea56d4d961ba0efd47321905b3fda1c664 (patch)
tree52c372bc07de09fe5a362b53c66df962e229946b
parentbcachefs: bch2_bkey_has_target() -> bch2_dev_rcu() (diff)
downloadlinux-rng-9cadb4ea56d4d961ba0efd47321905b3fda1c664.tar.xz
linux-rng-9cadb4ea56d4d961ba0efd47321905b3fda1c664.zip
bcachefs: bch2_extent_normalize() -> bch2_dev_rcu()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-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);
}