All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/15] xfs: condense dfops and automatic relogging
@ 2018-07-30 16:45 Brian Foster
  2018-07-30 16:45 ` [PATCH 01/15] xfs: refactor internal dfops initialization Brian Foster
                   ` (14 more replies)
  0 siblings, 15 replies; 56+ messages in thread
From: Brian Foster @ 2018-07-30 16:45 UTC (permalink / raw)
  To: linux-xfs

Hi all,

Here is the (actual) final dfops cleanup series. ;P This essentially
pares down xfs_defer_ops to a single list_head for queued deferred ops
and folds said list into the transaction, eliminating the need for the
xfs_defer_ops structure.

To facilitate this, the low free space mode flag is converted into a
transaction flag and carried across tx rolls to preserve current
behavior. The pending list is converted to an on-stack list with the
help of a change to cancel pending ops on xfs_defer_finish() failure.
The joined inode/buffer lists are also converted to on-stack lists once
said items are automatically relogged across dfops transaction rolls via
item hold/lock state.

The only real behavior change here should be patch 6 which adds the
missing xfs_defer_ijoin() calls that would, in absence of patch 6, be
implied by the automatic inode relogging patch. In other words, these
are the inodes that patch 8 would start to relog that weren't relogged
before. Technically patch 6 is unnecessary, but I had already identified
these sites as part of the initial investigation and so figured it would
be more clear to add them explicitly.

This survives xfstests and a weekend long fsstress run so far. I have
some fsx testing in progress now.

Thoughts, reviews, flames appreciated.

Brian

Brian Foster (15):
  xfs: refactor internal dfops initialization
  xfs: use transaction for intent recovery instead of raw dfops
  xfs: remove unused __xfs_defer_cancel() internal helper
  xfs: pass transaction to dfops reset/move helpers
  xfs: replace dop_low with transaction flag
  xfs: add missing defer ijoins for held inodes
  xfs: automatic dfops buffer relogging
  xfs: automatic dfops inode relogging
  xfs: drop dop param from xfs_defer_op_type ->finish_item() callback
  xfs: clean out superfluous dfops dop params/vars
  xfs: cancel dfops on xfs_defer_finish() error
  xfs: replace xfs_defer_ops ->dop_pending with on-stack list
  xfs: pass transaction to xfs_defer_add()
  xfs: always defer agfl block frees
  xfs: fold dfops into the transaction

 fs/xfs/libxfs/xfs_alloc.c       |  18 +--
 fs/xfs/libxfs/xfs_attr.c        |  26 +--
 fs/xfs/libxfs/xfs_attr_remote.c |   6 +-
 fs/xfs/libxfs/xfs_bmap.c        |  93 +++++------
 fs/xfs/libxfs/xfs_bmap.h        |  25 ++-
 fs/xfs/libxfs/xfs_bmap_btree.c  |   6 +-
 fs/xfs/libxfs/xfs_btree.h       |   1 -
 fs/xfs/libxfs/xfs_da_btree.h    |   1 -
 fs/xfs/libxfs/xfs_defer.c       | 273 ++++++++++++++------------------
 fs/xfs/libxfs/xfs_defer.h       |  28 +---
 fs/xfs/libxfs/xfs_dir2.c        |   2 -
 fs/xfs/libxfs/xfs_dir2.h        |   1 -
 fs/xfs/libxfs/xfs_ialloc.c      |  25 +--
 fs/xfs/libxfs/xfs_refcount.c    |  76 ++++-----
 fs/xfs/libxfs/xfs_refcount.h    |  25 ++-
 fs/xfs/libxfs/xfs_rmap.c        |  53 +++----
 fs/xfs/libxfs/xfs_rmap.h        |  22 ++-
 fs/xfs/libxfs/xfs_shared.h      |  12 ++
 fs/xfs/xfs_bmap_item.c          |  20 ++-
 fs/xfs/xfs_bmap_item.h          |   3 +-
 fs/xfs/xfs_bmap_util.c          |  18 +--
 fs/xfs/xfs_dquot.c              |   3 +-
 fs/xfs/xfs_filestream.c         |   3 +-
 fs/xfs/xfs_inode.c              |   3 +-
 fs/xfs/xfs_inode.h              |   1 -
 fs/xfs/xfs_log_recover.c        |  42 +++--
 fs/xfs/xfs_refcount_item.c      |  30 ++--
 fs/xfs/xfs_refcount_item.h      |   3 +-
 fs/xfs/xfs_reflink.c            |  33 ++--
 fs/xfs/xfs_symlink.c            |   1 -
 fs/xfs/xfs_trace.h              |  40 ++---
 fs/xfs/xfs_trans.c              |  32 +---
 fs/xfs/xfs_trans.h              |  28 +---
 fs/xfs/xfs_trans_bmap.c         |   6 +-
 fs/xfs/xfs_trans_extfree.c      |   2 -
 fs/xfs/xfs_trans_refcount.c     |   6 +-
 fs/xfs/xfs_trans_rmap.c         |   1 -
 37 files changed, 394 insertions(+), 574 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 56+ messages in thread

end of thread, other threads:[~2018-07-31 15:58 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-30 16:45 [PATCH 00/15] xfs: condense dfops and automatic relogging Brian Foster
2018-07-30 16:45 ` [PATCH 01/15] xfs: refactor internal dfops initialization Brian Foster
2018-07-30 19:30   ` Darrick J. Wong
2018-07-31  8:10     ` Christoph Hellwig
2018-07-31 11:47     ` Brian Foster
2018-07-31 14:08       ` Darrick J. Wong
2018-07-30 16:45 ` [PATCH 02/15] xfs: use transaction for intent recovery instead of raw dfops Brian Foster
2018-07-30 20:09   ` Darrick J. Wong
2018-07-31  8:12     ` Christoph Hellwig
2018-07-31 11:47     ` Brian Foster
2018-07-31 14:18       ` Darrick J. Wong
2018-07-31  8:13   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 03/15] xfs: remove unused __xfs_defer_cancel() internal helper Brian Foster
2018-07-30 20:09   ` Darrick J. Wong
2018-07-31  8:13   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 04/15] xfs: pass transaction to dfops reset/move helpers Brian Foster
2018-07-30 20:10   ` Darrick J. Wong
2018-07-31  8:14   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 05/15] xfs: replace dop_low with transaction flag Brian Foster
2018-07-30 20:11   ` Darrick J. Wong
2018-07-31  8:16   ` Christoph Hellwig
2018-07-31 11:47     ` Brian Foster
2018-07-30 16:45 ` [PATCH 06/15] xfs: add missing defer ijoins for held inodes Brian Foster
2018-07-30 20:15   ` Darrick J. Wong
2018-07-31  8:17   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 07/15] xfs: automatic dfops buffer relogging Brian Foster
2018-07-30 20:20   ` Darrick J. Wong
2018-07-31 11:48     ` Brian Foster
2018-07-31  8:19   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 08/15] xfs: automatic dfops inode relogging Brian Foster
2018-07-30 20:22   ` Darrick J. Wong
2018-07-31  8:19   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 09/15] xfs: drop dop param from xfs_defer_op_type ->finish_item() callback Brian Foster
2018-07-30 20:23   ` Darrick J. Wong
2018-07-31  8:20   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 10/15] xfs: clean out superfluous dfops dop params/vars Brian Foster
2018-07-30 20:24   ` Darrick J. Wong
2018-07-31  8:20   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 11/15] xfs: cancel dfops on xfs_defer_finish() error Brian Foster
2018-07-30 20:27   ` Darrick J. Wong
2018-07-31  8:21   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 12/15] xfs: replace xfs_defer_ops ->dop_pending with on-stack list Brian Foster
2018-07-30 20:47   ` Darrick J. Wong
2018-07-31 11:50     ` Brian Foster
2018-07-31  8:30   ` Christoph Hellwig
2018-07-31 11:50     ` Brian Foster
2018-07-30 16:45 ` [PATCH 13/15] xfs: pass transaction to xfs_defer_add() Brian Foster
2018-07-30 20:49   ` Darrick J. Wong
2018-07-31  8:31   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 14/15] xfs: always defer agfl block frees Brian Foster
2018-07-30 20:49   ` Darrick J. Wong
2018-07-31  8:32   ` Christoph Hellwig
2018-07-30 16:45 ` [PATCH 15/15] xfs: fold dfops into the transaction Brian Foster
2018-07-30 20:51   ` Darrick J. Wong
2018-07-31  8:36   ` Christoph Hellwig
2018-07-31 11:49     ` Brian Foster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.