btrfs: Fix wrong first_key parameter in replace_path
authorQu Wenruo <wqu@suse.com>
Mon, 23 Apr 2018 09:32:04 +0000 (17:32 +0800)
committerDavid Sterba <dsterba@suse.com>
Thu, 26 Apr 2018 11:21:04 +0000 (13:21 +0200)
commit17515f1b764df36271f3166c714f5a78301fbaa7
treeb03966bbc605fe3fb520fb71278086b22d9dd11e
parentc0872323746e11fc79344e3738b283a8cda86654
btrfs: Fix wrong first_key parameter in replace_path

Commit 581c1760415c ("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: 581c1760415c ("btrfs: Validate child tree block's level and first key")
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/relocation.c