diff options
| author | Mark Harmstone <mark@harmstone.com> | 2026-02-25 13:36:06 +0300 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2026-03-03 19:03:59 +0300 |
| commit | ae1238b77feafa2f7f10bcd0432a99e098a98ec6 (patch) | |
| tree | 4dc2429d22e479fe781d01d3df1f8979e6f295b2 | |
| parent | b2840e33127ce0eea880504b7f133e780f567a9b (diff) | |
| download | linux-ae1238b77feafa2f7f10bcd0432a99e098a98ec6.tar.xz | |
btrfs: read key again after incrementing slot in move_existing_remaps()
Fix move_existing_remaps() so that if we increment the slot because the
key we encounter isn't a REMAP_BACKREF, we don't reuse the objectid and
offset of the old item.
Link: https://lore.kernel.org/linux-btrfs/20260125123908.2096548-1-clm@meta.com/
Reported-by: Chris Mason <clm@fb.com>
Fixes: bbea42dfb91f ("btrfs: move existing remaps before relocating block group")
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Mark Harmstone <mark@harmstone.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
| -rw-r--r-- | fs/btrfs/relocation.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index cdb53c0b26ec..fcfbe1b1dab4 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -4399,6 +4399,8 @@ static int move_existing_remaps(struct btrfs_fs_info *fs_info, leaf = path->nodes[0]; } + + btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); } remap = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_remap_item); |
