[PATCHSET 2/9] fuse2fs: add some easy new features

Darrick J. Wong
2025-11-06T22:28:09Z

Hi all,

As of 2025, libfuse is a lot more capable than it was in 2013.
Implement some new features such as readdirplus and directory seeking
for better directory performance, and reduce the amount of filesystem
flushing so that it only happens when userspace explicitly asks for it.
Now we also can add htree indices to large directories, support MMP in
fuse2fs, and link count overflows are handled correctly.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

Comments and questions are, as always, welcome.

e2fsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/e2fsprogs.git/log/?h=fuse2fs-new-features
---
Commits in this patchset:
* libext2fs: initialize htree when expanding directory
* libext2fs: create link count adjustment helpers for dir_nlink
* libext2fs: fix ext2fs_mmp_update
* libext2fs: refactor aligned MMP buffer allocation
* libext2fs: always use ext2fs_mmp_get_mem to allocate fs->mmp_buf
* fuse2fs: check root directory while mounting
* fuse2fs: read bitmaps asynchronously during initialization
* fuse2fs: use file handles when possible
* fuse2fs: implement dir seeking
* fuse2fs: implement readdirplus
* fuse2fs: implement dirsync mode
* fuse2fs: only flush O_SYNC files on close
* fuse2fs: improve want_extra_isize handling
* fuse2fs: cache symlink targets in the kernel
* fuse2fs: constrain worker thread count
* fuse2fs: improve error handling behaviors
* fuse2fs: fix link count overflows on dir_nlink filesystems
* libsupport: add background thread manager
* fuse2fs: implement MMP updates
---
lib/ext2fs/ext2fs.h | 6
lib/support/bthread.h | 27 ++
debian/libext2fs2t64.symbols | 6
e2fsck/unix.c | 2
lib/ext2fs/dupfs.c | 7
lib/ext2fs/link.c | 290 ++++++++++++++++++++
lib/ext2fs/mkdir.c | 2
lib/ext2fs/mmp.c | 24 +-
lib/support/Makefile.in | 6
lib/support/bthread.c | 201 ++++++++++++++
misc/dumpe2fs.c | 2
misc/fuse2fs.1.in | 9 +
misc/fuse2fs.c | 617 ++++++++++++++++++++++++++++++++++++------
13 files changed, 1094 insertions(+), 105 deletions(-)
create mode 100644 lib/support/bthread.h
create mode 100644 lib/support/bthread.c