[00/11] xfs: clean up log tickets and record writes
mbox series

Message ID 20200304075401.21558-1-david@fromorbit.com
Headers show
Series
  • xfs: clean up log tickets and record writes
Related show

Message

Dave Chinner March 4, 2020, 7:53 a.m. UTC
This series follows up on conversions about relogging infrastructure
and the way xfs_log_done() does two things but only one of several
callers uses both of those functions. It also pointed out that
xfs_trans_commit() never writes to the log anymore, so only
checkpoints pass a ticket to xlog_write() with this flag set and
no transaction makes multiple calls to xlog_write() calls on the
same ticket. Hence there's no real need for XLOG_TIC_INITED to track
whether a ticket has written a start record to the log anymore.

A lot of further cleanups fell out of this. Once we no longer use
XLOG_TIC_INITED to carry state inside the write loop, the logic
can be simplified in both xlog_write and xfs_log_done. xfs_log_done
can be split up, and then the call chain can be flattened because
xlog_write_done() and xlog_commit_record() are basically the same.

This then leads to cleanups writing both commit and unmount records,
and removes a heap of duplicated error handling code in the unmount
record writing path.

And in looking over all this code, I noticed a heap of stale and
unnecessary comments through the code which can be cleaned up.

Finally, to complete what started all this, the XLOG_TIC_INITED flag
is removed.

This has made it through fstests without causing any obvious
regressions, so it's time for thoughts and comments. This can also
be found at:

https://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs.git/h?xlog-ticket-cleanup

Note that this message appears as the first (empty) commit of the
series, as this is how I get my local hacked version of guilt to
format this cover message automatically.

Diffstat:
 fs/xfs/xfs_log.c      | 509 +++++++++++++++++++-------------------------------
 fs/xfs/xfs_log.h      |   4 -
 fs/xfs/xfs_log_cil.c  |  13 +-
 fs/xfs/xfs_log_priv.h |  22 +--
 fs/xfs/xfs_trans.c    |  24 +--
 5 files changed, 225 insertions(+), 347 deletions(-)

Signed-off-by: Dave Chinner <dchinner@redhat.com>


Dave Chinner (11):
  xfs: don't try to write a start record into every iclog
  xfs: re-order initial space accounting checks in xlog_write
  xfs: refactor and split xfs_log_done()
  xfs: merge xlog_commit_record with xlog_write_done()
  xfs: factor out unmount record writing
  xfs: move xlog_state_ioerror()
  xfs: clean up xlog_state_ioerror()
  xfs: rename the log unmount writing functions.
  xfs: merge unmount record write iclog cleanup.
  xfs: remove some stale comments from the log code
  xfs: kill XLOG_TIC_INITED

 fs/xfs/xfs_log.c      | 509 ++++++++++++++++--------------------------
 fs/xfs/xfs_log.h      |   4 -
 fs/xfs/xfs_log_cil.c  |  13 +-
 fs/xfs/xfs_log_priv.h |  22 +-
 fs/xfs/xfs_trans.c    |  24 +-
 5 files changed, 225 insertions(+), 347 deletions(-)

Comments

Christoph Hellwig March 5, 2020, 4:05 p.m. UTC | #1
FYI, I'd prefer to just see the series without patches 6, 7 and 9 for
now.  They aren't really related to the rest, and I think this series:

    http://git.infradead.org/users/hch/xfs.git/shortlog/refs/heads/xfs-kill-XLOG_STATE_IOERROR

has a better approach to sort out those areas.  The rest looks really
good to me modulo minor cleanups here and there.
Dave Chinner March 5, 2020, 9:42 p.m. UTC | #2
On Thu, Mar 05, 2020 at 08:05:22AM -0800, Christoph Hellwig wrote:
> FYI, I'd prefer to just see the series without patches 6, 7 and 9 for
> now.  They aren't really related to the rest, and I think this series:
> 
>     http://git.infradead.org/users/hch/xfs.git/shortlog/refs/heads/xfs-kill-XLOG_STATE_IOERROR

URL not found.

-Dave.
Christoph Hellwig March 6, 2020, 1:03 a.m. UTC | #3
On Fri, Mar 06, 2020 at 08:42:24AM +1100, Dave Chinner wrote:
> On Thu, Mar 05, 2020 at 08:05:22AM -0800, Christoph Hellwig wrote:
> > FYI, I'd prefer to just see the series without patches 6, 7 and 9 for
> > now.  They aren't really related to the rest, and I think this series:
> > 
> >     http://git.infradead.org/users/hch/xfs.git/shortlog/refs/heads/xfs-kill-XLOG_STATE_IOERROR
> 
> URL not found.

Weird, works for me.