• Qu Wenruo's avatar
    btrfs: Fix wrong first_key parameter in replace_path · 17515f1b
    Qu Wenruo authored
    Commit 581c1760 ("btrfs: Validate child tree block's level and first
    key") introduced new @first_key parameter for read_tree_block(), however
    caller in replace_path() is parasing wrong key to read_tree_block().
    
    It should use parameter @first_key other than @key.
    
    Normally it won't expose problem as @key is normally initialzied to the
    same value of @first_key we expect.
    However in relocation recovery case, @key can be set to (0, 0, 0), and
    since no valid key in relocation tree can be (0, 0, 0), it will cause
    read_tree_block() to return -EUCLEAN and interrupt relocation recovery.
    
    Fix it by setting @first_key correctly.
    
    Fixes: 581c1760 ("btrfs: Validate child tree block's level and first key")
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    17515f1b
relocation.c 114 KB