The following changes since commit 1edf8056131aca6fe7f98873da8297e6fa279d8c: xfs: speed up write operations by using non-overlapped lookups when possible (2022-04-28 10:24:38 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/reflink-speedups-5.19_2022-04-28 for you to fetch changes up to 6ed7e509d2304519f4f6741670f512a55e9e80fe: xfs: rename xfs_*alloc*_log_count to _block_count (2022-04-28 10:25:59 -0700) ---------------------------------------------------------------- xfs: fix reflink inefficiencies As Dave Chinner has complained about on IRC, there are a couple of things about reflink that are very inefficient. First of all, we limited the size of all bunmapi operations to avoid flooding the log with defer ops in the worst case, but recent changes to the defer ops code have solved that problem, so get rid of the bunmapi length clamp. Second, the log reservations for reflink operations are far far larger than they need to be. Shrink them to exactly what we need to handle each deferred RUI and CUI log item, and no more. Also reduce logcount because we don't need 8 rolls per operation. Introduce a transaction reservation compatibility layer to avoid changing the minimum log size calculations. v2: better document the use of EFIs to track when refcount updates should be continued in a new transaction, disentangle the alternate log space reservation code ---------------------------------------------------------------- Darrick J. Wong (9): xfs: count EFIs when deciding to ask for a continuation of a refcount update xfs: stop artificially limiting the length of bunmap calls xfs: remove a __xfs_bunmapi call from reflink xfs: create shadow transaction reservations for computing minimum log size xfs: report "max_resp" used for min log size computation xfs: reduce the absurdly large log operation count xfs: reduce transaction reservations with reflink xfs: rewrite xfs_reflink_end_cow to use intents xfs: rename xfs_*alloc*_log_count to _block_count fs/xfs/libxfs/xfs_bmap.c | 22 +---- fs/xfs/libxfs/xfs_log_rlimit.c | 75 ++++++++++++++- fs/xfs/libxfs/xfs_refcount.c | 14 ++- fs/xfs/libxfs/xfs_refcount.h | 13 ++- fs/xfs/libxfs/xfs_trans_resv.c | 214 +++++++++++++++++++++++++++++------------ fs/xfs/libxfs/xfs_trans_resv.h | 16 ++- fs/xfs/xfs_reflink.c | 95 +++++++++++------- fs/xfs/xfs_trace.h | 32 +++++- fs/xfs/xfs_trans.c | 3 - 9 files changed, 345 insertions(+), 139 deletions(-)