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  4825a68653df7d07eb33c5be287903212811a96c (commit)
      from  03333cabcf9a39624f7fe4e6ffe9b854e95008a7 (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 4825a68653df7d07eb33c5be287903212811a96c
Author: Milos Nikic <[email protected]>
Date:   Mon Oct 5 20:51:51 2026 -0700

    libdiskfs: Release the new node when diskfs_create_node fails
    
    diskfs_alloc_node returns the new node locked and with a hard
    reference.  When diskfs_create_node then fails before entering the node
    in the directory, for instance because diskfs_init_dir finds no free
    block for a new directory, the error path cleared the mode and link
    count and returned without releasing the node!  The node stayed locked
    for good, and its inode stayed allocated on disk until e2fsck freed it.
    
    The next diskfs_node_iterate then waits for that lock forever.  Without
    a journal this stops the periodic sync until reboot silently.
    With a journal the periodic sync holds a handle while it waits, so the 
commit
    cannot drain and every new RPC blocks behind it.
    Running mkdir on a full filesystem is enough to trigger it.
    
    Release the node with diskfs_nput.  As it is unlinked, diskfs_drop_node
    truncates it and frees its inode.  Keep the file type in st_mode rather
    than clearing it, since diskfs_drop_node passes the mode to
    diskfs_free_node, and ext2fs uses it to undo the used directories count
    that ext2_alloc_inode took for a directory.

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

Summary of changes:
 libdiskfs/node-create.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)


hooks/post-receive
-- 
Hurd

Reply via email to