This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Hurd".

The branch, master has been updated
       via  652fc5764f440117c470ade37c31578139dd01ca (commit)
      from  ef8480a8d28bb9c6b8b714d912975e66526d1a03 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 652fc5764f440117c470ade37c31578139dd01ca
Author: Milos Nikic <[email protected]>
Date:   Fri Oct 9 09:21:45 2026 -0700

    ext2fs: Checkpoint the journal from kjournald
    
    Journal space came back only when the pager happened to write a
    transaction's blocks home, or when a commit found the log full and
    checkpointed in the committing thread, stalling it.  Let kjournald
    reclaim space in the background instead.
    
    After each wake, kjournald checkpoints the oldest committed
    transactions once less than half of the journal is free, and stops
    once three quarters are free again.  The gap keeps it from running on
    every wake, and lets the pager write hot blocks lazily in between.  A
    background pass gives way between transactions to a requested commit,
    to a commit in flight and to shutdown.  A stop that finds the journal
    past half full wakes kjournald at once rather than at the next tick.
    
    kjournald used to commit on every wake.  A wake now commits only on
    the 5-second tick or when a stop requested it (j_commit_requested), so
    that waking it to checkpoint does not force a commit.
    
    Only one thread checkpoints at a time (j_checkpointing); a second
    waits for the first and then flushes only what is still needed.  While
    the lock is dropped for I/O, the transaction being flushed is pinned
    through t_outstanding_io, so that a pager write finishing its last
    blocks cannot advance the tail and free it underneath the flusher.
    
    The checkpoint inside commit stays as a fallback and now logs a
    warning.  To check that it is no longer needed in practice, I made it
    panic: it never fired under a large apt upgrade, a full-disk stress
    with parallel data and metadata load, and a 4 MB journal, the smallest
    tune2fs allows.
    
    With space reclaimed in the background, the sync_global calls on
    journaled paths no longer serve to free the log.  They only write
    blocks home early, which works against the write-ahead order and grows
    the intercept cache; later patches can drop them.
    Message-ID: <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 ext2fs/journal.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 117 insertions(+), 10 deletions(-)


hooks/post-receive
-- 
Hurd

Reply via email to