HI folks, Version 2 of this set of changes to the log code. First version was posted here: https://lore.kernel.org/linux-xfs/20210128044154.806715-1-david@xxxxxxxxxxxxx/ "Quick patch dump for y'all. A couple of minor cleanups to the log behaviour, a fix for the CIL throttle hang and a couple of patches to rework the cache flushing that journal IO does to reduce the number of cache flushes by a couple of orders of magnitude." Version 2: - fix ticket reservation roundoff to include 2 roundoffs - removed stale copied comment from roundoff initialisation. - clarified "separation" to mean "separation for ordering purposes" in commit message. - added comment that newly activated, clean, empty iclogs have a LSN of 0 so are captured by the "iclog lsn < start_lsn" case that avoids needing to wait before releasing the commit iclog to be written. - added async cache flush infrastructure - convert CIL checkpoint push work it issue an unconditional metadata device cache flush rather than asking the first iclog write to issue it via REQ_PREFLUSH. - cleaned up xlog_write() to remove a redundant parameter and prepare the logic for setting flags on the iclog based on the type of operational data is being written to the log. - added XLOG_ICL_NEED_FUA flag to complement the NEED_FLUSH flag, allowing callers to issue explicit flushes and clear the NEED_FLUSH flag before the iclog is written without dropping the REQ_FUA requirement in /dev/null... - added CIL commit-in-start-iclog optimisation that clears the NEED_FLUSH flag to avoid an unnecessary cache flush when issuing the iclog. - fixed typo in CIL throttle bugfix comment. - fixed trailing whitespace in commit message.