Message ID | 20200304075401.21558-1-david@fromorbit.com (mailing list archive) |
---|---|
Headers | show |
Series | xfs: clean up log tickets and record writes | expand |
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.
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.
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.
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(-)