[BUG] Syzbot reported several warning triggered inside lookup_inline_extent_backref(). [CAUSE] As usual, the reproducer doesn't reliably trigger locally here, but at least we know the WARN_ON() is triggered when an inline backref can not be found, and it can only be triggered when @insert is true. (I.e. inserting a new inline backref, which means the backref should already exist) [ENHANCEMENT] After the WARN_ON(), dump all the parameters and the extent tree leaf to help debug.
Unified · Split
| @@ -848,6 +848,11 @@ again: · 847 unmodified lines | |||
| 848 | err = -ENOENT; | 848 | err = -ENOENT; |
| 849 | goto out; | 849 | goto out; |
| 850 | } else if (WARN_ON(ret)) { | 850 | } else if (WARN_ON(ret)) { |
| 851 | btrfs_print_leaf(path->nodes[0]); | ||
| 852 | btrfs_err(fs_info, | ||
| 853 | "extent item not found for insert, bytenr %llu num_bytes %llu parent %llu root_objectid %llu owner %llu offset %llu", | ||
| 854 | bytenr, num_bytes, parent, root_objectid, owner, | ||
| 855 | offset); | ||
| 851 | err = -EIO; | 856 | err = -EIO; |
| 852 | goto out; | 857 | goto out; |
| 853 | } | 858 | } |