All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/10] xfs: log item and transaction cleanups
@ 2018-05-02  8:01 Dave Chinner
  2018-05-02  8:01 ` [PATCH 01/10] xfs: log item flags are racy Dave Chinner
                   ` (9 more replies)
  0 siblings, 10 replies; 31+ messages in thread
From: Dave Chinner @ 2018-05-02  8:01 UTC (permalink / raw)
  To: linux-xfs

Hi folks,

This started out as one patch to get rid of log item descriptors,
then turned into an onion peeling exercise as it uncovered other
problems.

The series converts the log item flags to atomic ops so
they can be updated in different locking contexts safely -
XFS_LI_FAILED introduced a requirement for changing and checking
under the AIL lock, and we don't do that in many places.

This gets worse with the last patch in the series where I get rid of
log item descriptors, which moves the XFS_LI_LOGGED flag out of the
descriptor and into the log item itself, meaning the li_flags field
either needs ti's own lock or is updated atomically. I chose the
latter because we've got enough locks already and the available
atomic operations cover all the atomic logic checks we need.

In doing this, I kept hitting assert failures with the AIL lock
held, leading to unrecoverable hangs and a patch to avoid that.
I found inodes multiply joined to single transactions, so there's
patches to fix that. I needed high level transaction tracing to work
out where stuff was going wrong, so there's a patch for that. I
added some more assert checks to log items to catch wacky cases that
occurred but weren't caught while debugging the code.

So, really, the first and last patches in the series were the only
ones I intended to write - the rest were a result of pre-existing
bugs I found and the code I needed to track them down....

Cheers,

Dave.


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

end of thread, other threads:[~2018-05-08  0:08 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-02  8:01 [PATCH 0/10] xfs: log item and transaction cleanups Dave Chinner
2018-05-02  8:01 ` [PATCH 01/10] xfs: log item flags are racy Dave Chinner
2018-05-07 12:16   ` Brian Foster
2018-05-07 14:45   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 02/10] xfs: catch log items multiply joined to a transaction Dave Chinner
2018-05-07 12:16   ` Brian Foster
2018-05-07 14:48   ` Christoph Hellwig
2018-05-08  0:06     ` Dave Chinner
2018-05-02  8:01 ` [PATCH 03/10] xfs: add tracing to high level transaction operations Dave Chinner
2018-05-07 12:17   ` Brian Foster
2018-05-07 14:48   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 04/10] xfs: adder caller IP to xfs_defer* tracepoints Dave Chinner
2018-05-07 12:17   ` Brian Foster
2018-05-07 14:49   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 05/10] xfs: don't assert fail with AIL lock held Dave Chinner
2018-05-07 12:18   ` Brian Foster
2018-05-07 14:50     ` Christoph Hellwig
2018-05-07 23:59       ` Dave Chinner
2018-05-02  8:01 ` [PATCH 06/10] xfs: fix double ijoin in xfs_inactive_symlink_rmt() Dave Chinner
2018-05-07 14:51   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 07/10] xfs: fix double ijoin in xfs_reflink_cancel_cow_range Dave Chinner
2018-05-07 14:51   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 08/10] xfs: fix double ijoin in xfs_reflink_clear_inode_flag() Dave Chinner
2018-05-07 14:52   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 09/10] xfs: add some more debug checks to buffer log item reuse Dave Chinner
2018-05-07 14:52   ` Christoph Hellwig
2018-05-02  8:01 ` [PATCH 10/10] xfs: get rid of the log item descriptor Dave Chinner
2018-05-02 20:05   ` Darrick J. Wong
2018-05-02 21:53     ` Dave Chinner
2018-05-03 23:47       ` Darrick J. Wong
2018-05-07 14:55   ` Christoph Hellwig

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.