• Darrick J. Wong's avatar
    xfs: drop all altpath buffers at the end of the sibling check · afbabf56
    Darrick J. Wong authored
    The dirattr btree checking code uses the altpath substructure of the
    dirattr state structure to check the sibling pointers of dir/attr tree
    blocks.  At the end of sibling checks, xfs_da3_path_shift could have
    changed multiple levels of buffer pointers in the altpath structure.
    Although we release the leaf level buffer, this isn't enough -- we also
    need to release the node buffers that are unique to the altpath.
    
    Not releasing all of the altpath buffers leaves them locked to the
    transaction.  This is suboptimal because we should release resources
    when we don't need them anymore.  Fix the function to loop all levels of
    the altpath, and fix the return logic so that we always run the loop.
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    afbabf56
dabtree.c 13.6 KB