• Qu Wenruo's avatar
    btrfs: fix the ram_bytes assignment for truncated ordered extents · 896c8b92
    Qu Wenruo authored
    [HICCUP]
    After adding extra checks on btrfs_file_extent_item::ram_bytes to
    tree-checker, running fsstress leads to tree-checker warning at write time,
    as we created file extent items with an invalid ram_bytes.
    
    All those offending file extents have offset 0, and ram_bytes matching
    num_bytes, and smaller than disk_num_bytes.
    
    This would also trigger the recently enhanced btrfs-check, which catches
    such mismatches and report them as minor errors.
    
    [CAUSE]
    When a folio/page is invalidated and it is part of a submitted OE, we
    mark the OE truncated just to the beginning of the folio/page.
    
    And for truncated OE, we insert the file extent item with incorrect
    value for ram_bytes (using num_bytes instead of the usual value).
    
    This is not a big deal for end users, as we do not utilize the ram_bytes
    field for regular non-compressed extents.
    This mismatch is just a small violation against on-disk format.
    
    [FIX]
    Fix it by removing the override on btrfs_file_extent_item::ram_bytes.
    Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    896c8b92
inode.c 287 KB