btrfs: fix missing error handling when searching for inode refs during log replay
authorFilipe Manana <fdmanana@suse.com>
Wed, 18 Jun 2025 15:57:07 +0000 (16:57 +0100)
committerDavid Sterba <dsterba@suse.com>
Fri, 27 Jun 2025 17:56:35 +0000 (19:56 +0200)
commit6561a40ceced9082f50c374a22d5966cf9fc5f5c
treee844161b663c7398b96fa5c0e4a38f3c04dff63d
parent1e6ed33cabba8f06f532f2e5851a102602823734
btrfs: fix missing error handling when searching for inode refs during log replay

During log replay, at __add_inode_ref(), when we are searching for inode
ref keys we totally ignore if btrfs_search_slot() returns an error. This
may make a log replay succeed when there was an actual error and leave
some metadata inconsistency in a subvolume tree. Fix this by checking if
an error was returned from btrfs_search_slot() and if so, return it to
the caller.

Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c