diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-01 04:12:46 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-09 00:29:23 +0300 |
commit | 9cadb4ea56d4d961ba0efd47321905b3fda1c664 (patch) | |
tree | 52c372bc07de09fe5a362b53c66df962e229946b /fs/bcachefs/extents.c | |
parent | 8e3cc2003fd55f32b82c2a06ae7f0bd28b938bd7 (diff) | |
download | linux-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.c | 7 |
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); } |