mbox series

[GIT,PULL,1/3] xfs: elide defer work ->create_done if no intent

Message ID 170191727770.1193846.6148843866019229192.stg-ugh@frogsfrogsfrogs (mailing list archive)
State Superseded
Headers show
Series [GIT,PULL,1/3] xfs: elide defer work ->create_done if no intent | expand

Pull-request

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/defer-elide-create-done-6.8_2023-12-06

Message

Darrick J. Wong Dec. 7, 2023, 2:48 a.m. UTC
Hi Chandan,

Please pull this branch with changes for xfs for 6.8-rc1.

As usual, I did a test-merge with the main upstream branch as of a few
minutes ago, and didn't see any conflicts.  Please let me know if you
encounter any problems.

--D

The following changes since commit 33cc938e65a98f1d29d0a18403dbbee050dcad9a:

Linux 6.7-rc4 (2023-12-03 18:52:56 +0900)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/defer-elide-create-done-6.8_2023-12-06

for you to fetch changes up to 9c07bca793b4ff9f0b7871e2a928a1b28b8fa4e3:

xfs: elide ->create_done calls for unlogged deferred work (2023-12-06 18:45:17 -0800)

----------------------------------------------------------------
xfs: elide defer work ->create_done if no intent [v2]

Christoph pointed out that the defer ops machinery doesn't need to call
->create_done if the deferred work item didn't generate a log intent
item in the first place.  Let's clean that up and save an indirect call
in the non-logged xattr update call path.

v2: pick up rvb tags

This has been lightly tested with fstests.  Enjoy!

Signed-off-by: Darrick J. Wong <djwong@kernel.org>

----------------------------------------------------------------
Darrick J. Wong (22):
xfs: don't leak recovered attri intent items
xfs: use xfs_defer_pending objects to recover intent items
xfs: pass the xfs_defer_pending object to iop_recover
xfs: transfer recovered intent item ownership in ->iop_recover
xfs: recreate work items when recovering intent items
xfs: dump the recovered xattri log item if corruption happens
xfs: use xfs_defer_finish_one to finish recovered work items
xfs: move ->iop_recover to xfs_defer_op_type
xfs: don't set XFS_TRANS_HAS_INTENT_DONE when there's no ATTRD log item
xfs: hoist intent done flag setting to ->finish_item callsite
xfs: collapse the ->finish_item helpers
xfs: hoist ->create_intent boilerplate to its callsite
xfs: use xfs_defer_create_done for the relogging operation
xfs: clean out XFS_LI_DIRTY setting boilerplate from ->iop_relog
xfs: hoist xfs_trans_add_item calls to defer ops functions
xfs: collapse the ->create_done functions
xfs: move ->iop_relog to struct xfs_defer_op_type
xfs: make rextslog computation consistent with mkfs
xfs: fix 32-bit truncation in xfs_compute_rextslog
xfs: don't allow overly small or large realtime volumes
xfs: document what LARP means
xfs: elide ->create_done calls for unlogged deferred work

fs/xfs/libxfs/xfs_defer.c       | 184 ++++++++++++++++++----
fs/xfs/libxfs/xfs_defer.h       |  22 +++
fs/xfs/libxfs/xfs_log_recover.h |   7 +
fs/xfs/libxfs/xfs_rtbitmap.c    |  14 ++
fs/xfs/libxfs/xfs_rtbitmap.h    |  16 ++
fs/xfs/libxfs/xfs_sb.c          |   6 +-
fs/xfs/xfs_attr_item.c          | 252 ++++++++++++-------------------
fs/xfs/xfs_bmap_item.c          | 199 ++++++++++--------------
fs/xfs/xfs_extfree_item.c       | 327 +++++++++++++++-------------------------
fs/xfs/xfs_log.c                |   1 +
fs/xfs/xfs_log_priv.h           |   1 +
fs/xfs/xfs_log_recover.c        | 129 ++++++++--------
fs/xfs/xfs_refcount_item.c      | 233 +++++++++-------------------
fs/xfs/xfs_rmap_item.c          | 256 +++++++++++++------------------
fs/xfs/xfs_rtalloc.c            |   6 +-
fs/xfs/xfs_sysfs.c              |   9 ++
fs/xfs/xfs_trans.h              |  12 --
17 files changed, 768 insertions(+), 906 deletions(-)