
On Tue, Feb 09, 2021 at 06:33:37PM +0100, Marek Behún wrote:
When the btrfs_read_fs_root() function is searching a ROOT_ITEM with location key offset other than -1, it currently fails via BUG_ON.
The offset can have other value than -1, though. This can happen for example if a subvolume is renamed:
$ btrfs subvolume create X && sync Create subvolume './X' $ btrfs inspect-internal dump-tree /dev/root | grep -B 2 'name: X$ location key (270 ROOT_ITEM 18446744073709551615) type DIR transid 283 data_len 0 name_len 1 name: X $ mv X Y && sync $ btrfs inspect-internal dump-tree /dev/root | grep -B 2 'name: Y$ location key (270 ROOT_ITEM 0) type DIR transid 285 data_len 0 name_len 1 name: Y
As can be seen the offset changed from -1ULL to 0.
Do not fail in this case.
Signed-off-by: Marek Behún marek.behun@nic.cz Cc: David Sterba dsterba@suse.com Cc: Qu Wenruo wqu@suse.com Cc: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!