bcachefs: track current fiemap offset in start variable
authorBrian Foster <bfoster@redhat.com>
Mon, 15 Jan 2024 19:21:15 +0000 (14:21 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 24 Apr 2025 23:10:28 +0000 (19:10 -0400)
Signed-off-by: Brian Foster <bfoster@redhat.com>
fs/bcachefs/fs.c

index 59d919aeda74f45e1614c2a52c9d7736e87e79bf..dabec16f26391060d9d54f9a3d753798958996aa 100644 (file)
@@ -1387,6 +1387,7 @@ static int bch2_fiemap(struct inode *vinode, struct fiemap_extent_info *info,
                bch2_bkey_buf_realloc(&prev, c, k.k->u64s);
 
                sectors = min_t(unsigned, sectors, k.k->size - offset_into_extent);
+               start = iter.pos.offset + sectors;
 
                bch2_cut_front(POS(k.k->p.inode,
                                   bkey_start_offset(k.k) +
@@ -1407,8 +1408,7 @@ static int bch2_fiemap(struct inode *vinode, struct fiemap_extent_info *info,
                bkey_copy(prev.k, cur.k);
                have_extent = true;
 
-               bch2_btree_iter_set_pos(trans, &iter,
-                       POS(iter.pos.inode, iter.pos.offset + sectors));
+               bch2_btree_iter_set_pos(trans, &iter, POS(iter.pos.inode, start));
        }
        bch2_trans_iter_exit(trans, &iter);