• David Sterba's avatar
    btrfs: assert extent_map bdevs and lookup_map and split · c3e14909
    David Sterba authored
    This is a preparatory patch for removing extent_map::bdev. There's some
    history behind the code so this is only precaution to catch if things
    break before the actual removal happens.
    
    Logically, comparing a raw low-level block device (bdev) does not make
    sense for extent maps (high-level objects). This had no effect in
    practice but was quite confusing in the code.  The lookup_map is set iff
    EXTENT_FLAG_FS_MAPPING is set.
    
    The two pointers were stored in the same bytes and used potentially in
    two meanings. Now they're split, so the asserts are in place to check
    that the condition will not change.
    
    The lookup map pointer misused bdev, this has been changed in commit
    95617d69 ("btrfs: cleanup, stop casting for extent_map->lookup
    everywhere") to the explicit type. But the semantics hasn't changed and
    bdev was not actually used to decide if maps are mergeable.
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    c3e14909
extent_map.c 16.9 KB