diff options
| author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-09-01 18:12:26 -0400 |
|---|---|---|
| committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-09-21 11:39:48 -0400 |
| commit | 805ddc204287e74ebd2640c0f088e04f94e98b48 (patch) | |
| tree | 9c10193e84cba7da633ad0434fb4e57948577767 /fs/bcachefs/extents.c | |
| parent | bcachefs: Progress indicator for extents_to_backpointers (diff) | |
| download | linux-805ddc204287e74ebd2640c0f088e04f94e98b48.tar.gz linux-805ddc204287e74ebd2640c0f088e04f94e98b48.zip | |
bcachefs: bch2_dev_rcu_noerror()
bch2_dev_rcu() now properly errors if the device is invalid
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/extents.c')
| -rw-r--r-- | fs/bcachefs/extents.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index 324303bf4353..ad63445b85e5 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -1021,7 +1021,7 @@ void bch2_extent_ptr_to_text(struct printbuf *out, struct bch_fs *c, const struc { out->atomic++; rcu_read_lock(); - struct bch_dev *ca = bch2_dev_rcu(c, ptr->dev); + struct bch_dev *ca = bch2_dev_rcu_noerror(c, ptr->dev); if (!ca) { prt_printf(out, "ptr: %u:%llu gen %u%s", ptr->dev, (u64) ptr->offset, ptr->gen, @@ -1125,8 +1125,9 @@ static int extent_ptr_validate(struct bch_fs *c, { int ret = 0; + /* bad pointers are repaired by check_fix_ptrs(): */ rcu_read_lock(); - struct bch_dev *ca = bch2_dev_rcu(c, ptr->dev); + struct bch_dev *ca = bch2_dev_rcu_noerror(c, ptr->dev); if (!ca) { rcu_read_unlock(); return 0; |
