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

Dave Chinner
2020-03-04T07:54:07Z

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(-)

--
2.24.0.rc0