• Dave Chinner's avatar
    xfs: bmapbt checking on debug kernels too expensive · e3543819
    Dave Chinner authored
    For large sparse or fragmented files, checking every single entry in
    the bmapbt on every operation is prohibitively expensive. Especially
    as such checks rarely discover problems during normal operations on
    high extent coutn files. Our regression tests don't tend to exercise
    files with hundreds of thousands to millions of extents, so mostly
    this isn't noticed.
    
    However, trying to run things like xfs_mdrestore of large filesystem
    dumps on a debug kernel quickly becomes impossible as the CPU is
    completely burnt up repeatedly walking the sparse file bmapbt that
    is generated for every allocation that is made.
    
    Hence, if the file has more than 10,000 extents, just don't bother
    with walking the tree to check it exhaustively. The btree code has
    checks that ensure that the newly inserted/removed/modified record
    is correctly ordered, so the entrie tree walk in thses cases has
    limited additional value.
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    e3543819
xfs_bmap.c 172 KB