summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/io_read.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/io_read.c')
-rw-r--r--fs/bcachefs/io_read.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/fs/bcachefs/io_read.c b/fs/bcachefs/io_read.c
index cbc3cc1f6d03..c700a95df89e 100644
--- a/fs/bcachefs/io_read.c
+++ b/fs/bcachefs/io_read.c
@@ -754,17 +754,13 @@ int __bch2_read_indirect_extent(struct btree_trans *trans,
unsigned *offset_into_extent,
struct bkey_buf *orig_k)
{
- struct btree_iter iter;
- struct bkey_s_c k;
- u64 reflink_offset;
- int ret;
+ struct bkey_i_reflink_p *p = bkey_i_to_reflink_p(orig_k->k);
+ u64 reflink_offset = REFLINK_P_IDX(&p->v) + *offset_into_extent;
- reflink_offset = le64_to_cpu(bkey_i_to_reflink_p(orig_k->k)->v.idx) +
- *offset_into_extent;
-
- k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_reflink,
+ struct btree_iter iter;
+ struct bkey_s_c k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_reflink,
POS(0, reflink_offset), 0);
- ret = bkey_err(k);
+ int ret = bkey_err(k);
if (ret)
goto err;