Applied, thanks!

Milos Nikic, le jeu. 05 nov. 2026 05:28:23 -0800, a ecrit:
> Hello,
> 
> This series presents fixes and improvements for the journal.
> Under load its intercept pool fills and pager writes bypass the journal
> ("Intercept Pool Full! Bypassing WAL"), and a crash can leave a filesystem
> in a state with a corrupted orphan list after a halt right after a large
> upgrade.
> 
> - Patch 1 lets libpager's write callbacks know whether the kernel keeps
>   the pages, which the journal needs.
> - Patch 2 fixes the journal handles of the libdiskfs RPCs: deadlocks,
>   handles held across data copies, commit errors that were lost, and
>   ENOSPC on a full disk while freed blocks wait for a commit.
> - Patch 3 keeps the orphan list right for files without links.
> - Patch 4 replaces the intercept pool with the transactions' own shadow
>   copies, and fixes the journal's crash consistency: ordering of the log
>   and of home writes, recovery of the orphan list, error handling, and
>   concurrency.  With a journal, ext2fs no longer syncs the pagers
>   itself, and leaves durability to the journal.
> 
> Tested for several days with a translator in a kill -9 crash loop,
> running rm -rf and tar -xf of a large archive, with e2fsck after every
> crash: it was clean every time.  Also large apt upgrades followed by an
> immediate halt.
> 
> Thanks,
> Milos
> 
> 
> Milos Nikic (4):
>   libpager: Tell the write callbacks whether the kernel keeps the pages
>   libdiskfs: Fix the journal handles of RPCs
>   libdiskfs: Keep the orphan list right for files without links
>   ext2fs: Replace the journal's intercept pool, and fix its crash
>     consistency
> 
>  ext2fs/balloc.c            |   11 +
>  ext2fs/ext2fs.c            |    4 +-
>  ext2fs/ext2fs.h            |   29 +-
>  ext2fs/getblk.c            |   12 +-
>  ext2fs/hyper.c             |   30 +-
>  ext2fs/ialloc.c            |   21 +-
>  ext2fs/inode.c             |   22 +-
>  ext2fs/journal.c           | 1741 ++++++++++++++++++++++++------------
>  ext2fs/journal.h           |   26 +-
>  ext2fs/orphan.c            |   10 +
>  ext2fs/pager.c             |  107 ++-
>  ext2fs/truncate.c          |   25 +-
>  libdiskfs/dir-link.c       |   26 +-
>  libdiskfs/dir-lookup.c     |   46 +-
>  libdiskfs/dir-mkdir.c      |   19 +-
>  libdiskfs/dir-readdir.c    |   10 +-
>  libdiskfs/dir-rename.c     |   26 +-
>  libdiskfs/dir-renamed.c    |    6 +-
>  libdiskfs/diskfs.h         |   17 +-
>  libdiskfs/file-get-trans.c |    8 +-
>  libdiskfs/file-set-trans.c |   39 +-
>  libdiskfs/file-sync.c      |   10 +-
>  libdiskfs/fsys-getroot.c   |   14 +
>  libdiskfs/init-startup.c   |    6 +
>  libdiskfs/io-get-conch.c   |    7 +
>  libdiskfs/io-modes-off.c   |    7 +
>  libdiskfs/io-modes-on.c    |    7 +
>  libdiskfs/io-modes-set.c   |    7 +
>  libdiskfs/io-read.c        |   17 +-
>  libdiskfs/io-readable.c    |    6 +
>  libdiskfs/io-rel-conch.c   |    7 +
>  libdiskfs/io-seek.c        |    6 +
>  libdiskfs/io-write.c       |   19 +
>  libdiskfs/journal.c        |   18 +-
>  libdiskfs/node-create.c    |    6 +
>  libdiskfs/priv.h           |   15 +
>  libpager/data-return.c     |   11 +
>  libpager/pager.h           |    7 +
>  38 files changed, 1698 insertions(+), 707 deletions(-)
> 
> -- 
> 2.56.0
> 
> 

-- 
Samuel
Hi ! I'm a .signature virus ! Copy me into your ~/.signature, please !

Reply via email to