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 3be606bace746a32a1640c238df4075c253c2271 (commit)
from 9a85da6c53b73e52abc1ac13892e46b7e69a0be1 (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 3be606bace746a32a1640c238df4075c253c2271
Author: Milos Nikic <[email protected]>
Date: Mon Sep 14 13:57:39 2026 -0700
ext2fs: Add ext3 style orphan list
When the file system is in read-only mode it is not possible to
remove inodes from disk. This causes issues that fsck needs to fix
later.
The orphan list serves as a list of nodes that have nlink == 0 in memory
but didn't manage to get deleted from disk in time.
Such a list gives file system an opportunity to remove them on the
following restart prior to fsck run.
Even if the file system itself doesn't fix it, fsck understands this
implementation of the orphan list and will gracefully clean it up the first
time it sees it.
It works by utilizing the superblock's s_last_orphan as the head of the
singly linked list on disk. If s_last_orphan is 0, the list is empty and
there
are no orphans. Otherwise it points to the last element added to that
list. That element is the node that needs to be deleted, so by
convention its i_dtime is altered to point to the next element and so on.
In memory, it is represented as a doubly linked list for efficient updates.
This patch also reverts changes to libdiskfs/pager.c done by the journal
patch 370c37aae. (they were a workaround for the fact that orphan list
wasn't
yet implemented).
-----------------------------------------------------------------------
Summary of changes:
ext2fs/Makefile | 2 +-
ext2fs/ext2fs.c | 5 +
ext2fs/ext2fs.h | 12 ++
ext2fs/ialloc.c | 3 +
ext2fs/inode.c | 46 ++++---
ext2fs/orphan.c | 343 ++++++++++++++++++++++++++++++++++++++++++++++++
ext2fs/pager.c | 71 +---------
libdiskfs/Makefile | 2 +-
libdiskfs/dir-clear.c | 4 +
libdiskfs/dir-init.c | 6 +
libdiskfs/dir-link.c | 4 +
libdiskfs/dir-rename.c | 11 +-
libdiskfs/dir-renamed.c | 13 ++
libdiskfs/dir-rmdir.c | 2 +
libdiskfs/dir-unlink.c | 2 +
libdiskfs/diskfs.h | 14 ++
libdiskfs/node-create.c | 1 +
libdiskfs/node-drop.c | 8 +-
libdiskfs/orphan.c | 40 ++++++
19 files changed, 496 insertions(+), 93 deletions(-)
create mode 100644 ext2fs/orphan.c
create mode 100644 libdiskfs/orphan.c
hooks/post-receive
--
Hurd