]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: defer frees from common inode allocation paths
authorBrian Foster <bfoster@redhat.com>
Tue, 8 May 2018 00:38:48 +0000 (17:38 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 9 May 2018 17:04:02 +0000 (10:04 -0700)
commit68274914ed1722654f0ee8e8ba8bf7730f5e771c
treef3e073d9376303a0df38ceda925d55e7f0c25588
parentf02f5ad9338595897d30fa1b719ea319707ed2b6
xfs: defer frees from common inode allocation paths

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: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_inode.c
fs/xfs/xfs_symlink.c