• Eric Sandeen's avatar
    xfs: check on-disk (not incore) btree root size in dfrag.c · 427d9fe2
    Eric Sandeen authored
    xfs_swap_extents_check_format() contains checks to make sure that
    original and the temporary files during defrag are compatible;
    Gabriel VLASIU ran into a case where xfs_fsr returned EINVAL
    because the tests found the btree root to be of size 120,
    while the fork offset was only 104; IOW, they overlapped.
    
    However, this is just due to an error in the
    xfs_swap_extents_check_format() tests, because it is checking
    the in-memory btree root size against the on-disk fork offset.
    We should be checking the on-disk sizes in both cases.
    
    This patch adds a new macro to calculate this size, and uses
    it in the tests.
    
    With this change, the filesystem image provided by Gabriel
    allows for proper file degragmentation.
    Reported-by: default avatarGabriel VLASIU <gabriel@vlasiu.net>
    Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarBen Myers <bpm@sgi.com>
    427d9fe2
xfs_dfrag.c 12.7 KB