On Wed, Feb 3, 2021 at 7:08 PM Andreas Gruenbacher <[email protected]> wrote: > In gfs2_log_flush, we're going through all active transactions. For > each of the buffers in those transactions that has completed, we either > add a revoke to the active transaction immediately or we move the > buffer to the transaction's ail2 list, which may result in a revoke > later. > > However, whenever a transaction at the tail of the log completes, the > current tail of the log advances. gfs2_log_flush writes out the log > header for the system transaction, with lh_tail set to that current tail > (sd_log_flush_head). This implicitly revokes all previous blocks in the > log, so the revokes we've just written become obsolete. > > So instead of writing unnecessary revokes, just skip completed > transactions at the tail of the log.
This patch is still causing problems during testing, so we'll put it aside for now and fix it later. Thanks, Andreas
