[PATCHBOMB 1.48] fuse2fs: new features, new server

Darrick J. Wong
2025-11-06T22:14:41Z

Hi Ted,

As promised, this large patchbomb contains all the improvements that I'd
like to make to fuse2fs before integrating iomap. Major new features
include:

- Fix locking of the block device (or image file) to prevent multiple
fuse2fs instances.
- Initializing the htree index in a growing directory so that directory
lookups aren't horrifyingly slow.
- Implementing MMP for cluster support.
- Use file handles to reduce directory path lookups.
- Implement directory seeking, readdir plus (the fuse version), and
dirsync.
- Fix differences in nlink overflow handling vs the kernel.
- Cache symlinks when possible.
- Refactor startup and shutdown to reduce main() complexity.
- Add tracing for file operations.
- Add the shutdown ioctl for better recovery testing.
- Drop fuse 2.xx support.

At the end of this series, I create a new fuse ext* server (fuse4fs)
which uses the lowlevel FUSE API instead of the high level one. The
major advantage of using the lowlevel API is that all file operations
are performed in terms of inodes instead of paths. As a result, fuse4fs
has MUCH less overhead than fuse2fs because we avoid the overhead of
having libfuse translate inode numbers to paths only to have fuse2fs
translate paths back into inode numbers.

Obviously, this stuff should go into e2fsprogs 1.48, not a 1.47.x stable
release.

--D