• Qu Wenruo's avatar
    btrfs: remove v0 extent handling · 182741d2
    Qu Wenruo authored
    The v0 extent item has been deprecated for a long time, and we don't have
    any report from the community either.
    
    So it's time to remove the v0 extent specific error handling, and just
    treat them as regular extent tree corruption.
    
    This patch would remove the btrfs_print_v0_err() helper, and enhance the
    involved error handling to treat them just as any extent tree
    corruption. No reports regarding v0 extents have been seen since the
    graceful handling was added in 2018.
    
    This involves:
    
    - btrfs_backref_add_tree_node()
      This change is a little tricky, the new code is changed to only handle
      BTRFS_TREE_BLOCK_REF_KEY and BTRFS_SHARED_BLOCK_REF_KEY.
    
      But this is safe, as we have rejected any unknown inline refs through
      btrfs_get_extent_inline_ref_type().
      For keyed backrefs, we're safe to skip anything we don't know (that's
      if it can pass tree-checker in the first place).
    
    - btrfs_lookup_extent_info()
    - lookup_inline_extent_backref()
    - run_delayed_extent_op()
    - __btrfs_free_extent()
    - add_tree_block()
      Regular error handling of unexpected extent tree item, and abort
      transaction (if we have a trans handle).
    
    - remove_extent_data_ref()
      It's pretty much the same as the regular rejection of unknown backref
      key.
      But for this particular case, we can also remove a BUG_ON().
    
    - extent_data_ref_count()
      We can remove the BTRFS_EXTENT_REF_V0_KEY BUG_ON(), as it would be
      rejected by the only caller.
    
    - btrfs_print_leaf()
      Remove the handling for BTRFS_EXTENT_REF_V0_KEY.
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    182741d2
relocation.c 115 KB