diff options
Diffstat (limited to 'fs/bcachefs/extents.c')
-rw-r--r-- | fs/bcachefs/extents.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index f73e7562e723..2632aea90dfe 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -160,9 +160,13 @@ bch2_extent_has_target(struct bch_fs *c, struct bkey_s_c_extent e, unsigned targ { const struct bch_extent_ptr *ptr; - extent_for_each_ptr(e, ptr) - if (dev_in_target(c->devs[ptr->dev], target)) + extent_for_each_ptr(e, ptr) { + struct bch_dev *ca = bch_dev_bkey_exists(c, ptr->dev); + + if (dev_in_target(ca, target) && + (!ptr->cached || !ptr_stale(ca, ptr))) return ptr; + } return NULL; } |