This is an old revision of the document!


XFS FUSE Implementation

This project is part of GSoC'21. In this project, I've worked on a read-only userland implementation of the XFS Filesystem through the FUSE kernel interface. This involved writing the client in Rust using the fuse crate.

  • XFS library.
    • Read basic structures such as the Super Block and the AGI.
    • Parse Extents.
    • Parse and Navigate variable-length B+Trees.
    • Parse and Navigate fixed-length B+Trees.
    • Read and Traverse directories:
      • Short Form directories.
      • Block directories.
      • Leaf directories.
      • Node directories.
      • B+Tree directories.
    • Read files:
      • Extent-based files.
      • B+Tree-based files.
    • Read symbolic links:
      • Short Form symbolic links.
      • Extent-based symbolic links.
    • Read extended attributes:
      • Short Form extended attributes.
      • Leaf extended attributes.
      • Node extended attributes.
      • B+Tree extended attributes.
  • FUSE glue code.
    • stat the filesystem.
    • Access control.
    • Return standard Unix file attributes.
    • Both stateless directories and with state files implementations.
  • Some Unit Tests.
  • Metadata integrity checks.
    • CRC32C check.
    • UUID checks.
    • Magic Number checks.
    • Block Number checks.
  • FreeBSD Ports package.

Some unit tests have been written, but the coverage is weak. The coverage could be expanded as a future plan. I have also tested the filesystem manually and verified each functionality.

  • summerofcode2021projects/xfsfuseimplementation.1629564766.txt.gz
  • Last modified: 2021/08/21 16:52
  • by KhaledEmaraDev