summaryrefslogtreecommitdiff
path: root/libbcachefs/extents.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-04-17 12:42:47 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-04-17 12:51:03 -0400
commit0f59cc6a9eae6624f767cb74a405971de5919135 (patch)
treec9ce0b10a0d9f9d2f8544628fa8ebbc81baa539b /libbcachefs/extents.c
parent28039ec698d81cd4581ca47191ed13568932e402 (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.c10
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;