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 1f77b5887c93992bb56c3e1562b6b9140fe7b340 (commit)
via 3e3544862ca7554ad6181b723cbc937d923f25c6 (commit)
from 5dee2b909591af735b982b3aff241c47cab11c1d (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 1f77b5887c93992bb56c3e1562b6b9140fe7b340
Author: Milos Nikic <[email protected]>
Date: Sun Oct 4 13:17:43 2026 -0700
ext2fs: Make journal pre-notify.
Previously journal was notified after the fact (block has already been
changed).
This patch changes this, journal is now notified ahead of time that a
block is about to be altered, and journal is also notified when we are
done editing.
This helps keep the main filesystem free of torn writes and makes
our journal behave much more closely to the journal in ext4.
Function names have been changed to reflect ext4 journal functions
(journal_get_write_access() to pre-notify the journal and
journal_mark_dirty() to tell the journal we are done modifying.)
journal_record_freed_blocks () is now taking transaction handle instead
of trying to find out which txn is running inside. This aligns it more
to the other journaling functions.
A new function, journal_thread_transaction (), returns the transaction of
the calling thread's open handle. The edit sites use it to get the
transaction they pass to journal_get_write_access () and
journal_mark_dirty (). While the journal is live every metadata edit
must run inside a handle, so the result is never NULL there, and the
handle keeps the transaction T_RUNNING or T_LOCKED until it is released;
both are asserted. It returns NULL only when there is no journal, or the
journal is shutting down and no handle was opened, and callers then skip
journaling. Unlike the old lookup in journal_record_freed_blocks (), it
never falls back to j_running_transaction for a thread without a handle.
journal_get_write_access is a silent no-op when the system is
unjournaled.
Message-ID: <[email protected]>
commit 3e3544862ca7554ad6181b723cbc937d923f25c6
Author: Milos Nikic <[email protected]>
Date: Sun Oct 4 13:17:42 2026 -0700
ext2fs: Delegate metadata sync to WAL and fix shutdown hang.
When journaling is active, forcing metadata to the physical
platter via sync_global in diskfs_set_hypermetadata fights the Write-Ahead
Log
and artificially floods the journal's intercept cache with rushed pager
writes.
This patch skips sync_global when the journal is present, instead using
diskfs_journal_set_sync() to guarantee durability through the WAL.
Relying on lazy pager evictions, however, exposes a race during unmount.
If a pageout completes after diskfs_journal_shutdown sets j_must_exit,
journal_notify_blocks_written_locked previously returned immediately.
This left jb_is_flushing set, causing journal_quiesce_checkpoints to wait
on j_flush_wait forever.
The notification path is updated to properly release flushing claims while
j_must_exit is set, without altering the checkpoint list that the quiesce
routine is actively walking.
Message-ID: <[email protected]>
-----------------------------------------------------------------------
Summary of changes:
ext2fs/balloc.c | 10 +++-
ext2fs/ext2fs.h | 72 +++++++++++++++++++----------
ext2fs/getblk.c | 8 ++++
ext2fs/hyper.c | 32 +++++++++----
ext2fs/ialloc.c | 11 ++++-
ext2fs/inode.c | 20 ++++++--
ext2fs/journal.c | 133 +++++++++++++++++++++++++++++++++++++++++++-----------
ext2fs/journal.h | 2 +-
ext2fs/orphan.c | 66 ++++++++++++---------------
ext2fs/truncate.c | 7 +++
ext2fs/xattr.c | 9 ++++
11 files changed, 265 insertions(+), 105 deletions(-)
hooks/post-receive
--
Hurd