xfs: bmap log intent cleanups [v29.3 15/18]

The next major target of online repair are metadata that are persisted
 in blocks mapped by a file fork.  In other words, we want to repair
 directories, extended attributes, symbolic links, and the realtime free
 space information.  For file-based metadata, we assume that the space
 metadata is correct, which enables repair to construct new versions of
 the metadata in a temporary file.  We then need to swap the file fork
 mappings of the two files atomically.  With this patchset, we begin
 constructing such a facility based on the existing bmap log items and a
 new extent swap log item.
 
 This series cleans up a few parts of the file block mapping log intent
 code before we start adding support for realtime bmap intents.  Most of
 it involves cleaning up tracepoints so that more of the data extraction
 logic ends up in the tracepoint code and not the tracepoint call site,
 which should reduce overhead further when tracepoints are disabled.
 There is also a change to pass bmap intents all the way back to the bmap
 code instead of unboxing the intent values and re-boxing them after the
 _finish_one function completes.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZdlBYgAKCRBKO3ySh0YR
 phAMAP9huan/JlVi4QwzTh363EQLk72fQxMleGvVLetY5ZMMOQEA/yUdBGbJyRxn
 D1gqrr68KFf61NKxrJir41djeeqKjQw=
 =ex04
 -----END PGP SIGNATURE-----

Merge tag 'bmap-intent-cleanups-6.9_2024-02-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.9-mergeC

xfs: bmap log intent cleanups

The next major target of online repair are metadata that are persisted
in blocks mapped by a file fork.  In other words, we want to repair
directories, extended attributes, symbolic links, and the realtime free
space information.  For file-based metadata, we assume that the space
metadata is correct, which enables repair to construct new versions of
the metadata in a temporary file.  We then need to swap the file fork
mappings of the two files atomically.  With this patchset, we begin
constructing such a facility based on the existing bmap log items and a
new extent swap log item.

This series cleans up a few parts of the file block mapping log intent
code before we start adding support for realtime bmap intents.  Most of
it involves cleaning up tracepoints so that more of the data extraction
logic ends up in the tracepoint code and not the tracepoint call site,
which should reduce overhead further when tracepoints are disabled.
There is also a change to pass bmap intents all the way back to the bmap
code instead of unboxing the intent values and re-boxing them after the
_finish_one function completes.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'bmap-intent-cleanups-6.9_2024-02-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: add a xattr_entry helper
  xfs: move xfs_bmap_defer_add to xfs_bmap_item.c
  xfs: reuse xfs_bmap_update_cancel_item
  xfs: add a bi_entry helper
  xfs: remove xfs_trans_set_bmap_flags
  xfs: clean up bmap log intent item tracepoint callsites
  xfs: split tracepoint classes for deferred items
This commit is contained in:
Chandan Babu R 2024-02-24 10:29:06 +05:30
commit 10ea6158b4
7 changed files with 226 additions and 158 deletions