• Mark Tinguely's avatar
    xfs: fix cil push sequence after log recovery · 5c18717e
    Mark Tinguely authored
    When the CIL checkpoint is fully written to the log, the LSN of the checkpoint
    commit record is written into the CIL context structure. This allows log force
    waiters to correctly detect when the checkpoint they are waiting on have been
    fully written into the log buffers.
    
    However, the initial context after mount is initialised with a non-zero commit
    LSN, so appears to waiters as though it is complete even though it may not have
    even been pushed, let alone written to the log buffers. Hence a log force
    immediately after a filesystem is mounted may not behave correctly, nor does
    commit record ordering if multiple CIL pushes interleave immediately after
    mount.
    
    To fix this, make sure the initial context commit LSN is not touched until the
    first checkpointis actually pushed.
    
    [dchinner: rewrite commit message]
    Signed-off-by: default avatarMark Tinguely <tinguely@sgi.com>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    5c18717e
xfs_log_cil.c 28.8 KB