diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-04-17 12:42:47 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-04-17 12:51:03 -0400 |
commit | 0f59cc6a9eae6624f767cb74a405971de5919135 (patch) | |
tree | c9ce0b10a0d9f9d2f8544628fa8ebbc81baa539b /libbcachefs/extents.c | |
parent | 28039ec698d81cd4581ca47191ed13568932e402 (diff) |
Update bcachefs sources to 65456ba56b93 bcachefs: Fix struct with flex member ABI warning
Diffstat (limited to 'libbcachefs/extents.c')
-rw-r--r-- | libbcachefs/extents.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libbcachefs/extents.c b/libbcachefs/extents.c index 98de81bd..7058a343 100644 --- a/libbcachefs/extents.c +++ b/libbcachefs/extents.c @@ -158,7 +158,15 @@ int bch2_bkey_pick_read_device(struct bch_fs *c, struct bkey_s_c k, if (dev >= 0 && p.ptr.dev != dev) continue; - struct bch_dev *ca = bch2_dev_rcu(c, p.ptr.dev); + struct bch_dev *ca = bch2_dev_rcu_noerror(c, p.ptr.dev); + + if (unlikely(!ca && p.ptr.dev != BCH_SB_MEMBER_INVALID)) { + rcu_read_unlock(); + int ret = bch2_dev_missing_bkey(c, k, p.ptr.dev); + if (ret) + return ret; + rcu_read_lock(); + } if (p.ptr.cached && (!ca || dev_ptr_stale_rcu(ca, &p.ptr))) continue; |