• Darrick J. Wong's avatar
    xfs: increase XFS_BTREE_MAXLEVELS to fit the rmapbt · df3954ff
    Darrick J. Wong authored
    By my calculations, a 1,073,741,824 block AG with a 1k block size
    can attain a maximum height of 9.  Assuming a record size of 24
    bytes, a key/ptr size of 44 bytes, and half-full btree nodes, we'd
    need 53,687,092 blocks for the records and ~6 million blocks for the
    keys.  That requires a btree of height 9 based on the following
    derivation:
    
    Block size = 1024b
    sblock CRC header = 56b
    == 1024-56 = 968 bytes for tree data
    
    rmapbt record = 24b
    == 40 records per leaf block
    
    rmapbt ptr/key = 44b
    == 22 ptr/keys per block
    
    Worst case, each block is half full, so 20 records and 11 ptrs per block.
    
    1073741824 rmap records / 20 records per block
    == 53687092 leaf blocks
    
    53687092 leaves / 11 ptrs per block
    == 4880645 level 1 blocks
    == 443695 level 2 blocks
    == 40336 level 3 blocks
    == 3667 level 4 blocks
    == 334 level 5 blocks
    == 31 level 6 blocks
    == 3 level 7 blocks
    == 1 level 8 block
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    df3954ff
xfs_btree.h 17.3 KB