• Brian Foster's avatar
    xfs: defer frees from common inode allocation paths · 8b922f0e
    Brian Foster authored
    Inode allocation can require block allocation for physical inode
    chunk allocation, inode btree record insertion, and/or directory
    block allocation for entry insertion. Any of these block allocation
    requests can require AGFL fixups prior to the actual allocation.
    Update the common file creation transacions to defer AGFL frees from
    these contexts to avoid too much log reservation consumption
    per-transaction.
    
    Since these transactions are already passed down through the btree
    cursors and da_args structure, this simply requires to attach dfops
    to the transaction. Note that this covers tr_create, tr_mkdir and
    tr_symlink. Other transactions such as tr_create_tmpfile do not
    already make use of deferred operations and so are left alone for
    the time being.
    Signed-off-by: default avatarBrian Foster <bfoster@redhat.com>
    Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    8b922f0e
xfs_inode.c 100 KB