[v2,00/15] xfs: embed dfops in the transaction
mbox series

Message ID 20180723130414.47980-1-bfoster@redhat.com
Headers show
Series
  • xfs: embed dfops in the transaction
Related show

Message

Brian Foster July 23, 2018, 1:03 p.m. UTC
Hi all,

Here is v2 of the series to embed dfops in the transaction. This is
rebased onto Darrick's recently posted[1] xfs_defer_finish() patch to
ensure the associated function returns with a clean transaction. A new
patch is appended to the series to avoid that extra roll when
xfs_defer_finish() is called via the transaction commit path. Otherwise
this has minor updates based on feedback to v1.

Note that, as discussed, I'm working on some changes to further condense
xfs_defer_ops with the transaction structure (such as automatic dfops
relogging). Those changes will be part of a separate series.

Thoughts, reviews, flames appreciated.

Brian

[1] https://marc.info/?l=linux-xfs&m=153192905211637&w=2

v2:
- Rebase on djwong xfs_defer_finish() final tx roll patch.
- Added patch to skip extra roll on dfops finish via tx commit.
- Split up assert in xfs_reflink_cancel_cow_blocks().
- Use memset()/memcpy() rather than open-coded reset/copy.
- Relocated struct xfs_defer_ops and xfs_defer_cancel() defs to avoid
  header file include mess.
v1: https://marc.info/?l=linux-xfs&m=153200816200883&w=2

Brian Foster (15):
  xfs: pull up dfops from xfs_itruncate_extents()
  xfs: use ->t_dfops in log recovery intent processing
  xfs: fix transaction leak on remote attr set/remove failure
  xfs: make deferred processing safe for embedded dfops
  xfs: remove unused deferred ops committed field
  xfs: reset dfops to initial state after finish
  xfs: pack holes in xfs_defer_ops and xfs_trans
  xfs: support embedded dfops in transaction
  xfs: use internal dfops in cow blocks cancel
  xfs: use internal dfops in attr code
  xfs: use internal dfops during [b|c]ui recovery
  xfs: remove all boilerplate defer init/finish code
  xfs: remove unnecessary dfops init calls in xattr code
  xfs: drop unnecessary xfs_defer_finish() dfops parameter
  xfs: bypass final dfops roll in trans commit path

 fs/xfs/libxfs/xfs_attr.c        | 49 ++++++-----------
 fs/xfs/libxfs/xfs_attr_remote.c | 13 ++---
 fs/xfs/libxfs/xfs_bmap.c        | 16 +-----
 fs/xfs/libxfs/xfs_defer.c       | 97 +++++++++++++++++++++++----------
 fs/xfs/libxfs/xfs_defer.h       | 21 ++-----
 fs/xfs/libxfs/xfs_refcount.c    | 10 +---
 fs/xfs/xfs_attr_inactive.c      |  1 +
 fs/xfs/xfs_bmap_item.c          | 21 +++----
 fs/xfs/xfs_bmap_util.c          | 45 +++------------
 fs/xfs/xfs_dquot.c              |  8 +--
 fs/xfs/xfs_inode.c              | 87 ++++++-----------------------
 fs/xfs/xfs_iomap.c              | 26 +--------
 fs/xfs/xfs_iops.c               |  1 +
 fs/xfs/xfs_log_recover.c        | 12 +---
 fs/xfs/xfs_qm_syscalls.c        |  1 +
 fs/xfs/xfs_refcount_item.c      | 30 +++++-----
 fs/xfs/xfs_reflink.c            | 51 ++++++-----------
 fs/xfs/xfs_rtalloc.c            |  9 +--
 fs/xfs/xfs_symlink.c            | 38 +++----------
 fs/xfs/xfs_trace.h              |  8 +--
 fs/xfs/xfs_trans.c              | 37 +++++++++++--
 fs/xfs/xfs_trans.h              | 22 +++++++-
 22 files changed, 240 insertions(+), 363 deletions(-)