In Progress

The UnionFS project aims to stabilize and enhance its utility on FreeBSD, focusing on Enabling apparent modifications to read-only filesystems, Supporting multiple jails sharing the same base and simplifying their upgrades, and Facilitating container scenarios with layered, pre-packaged images.

Contact: Olivier Certner <olce@freebsd.org>

The UnionFS project on FreeBSD, led by Olivier Certner, is focused on enhancing and stabilizing UnionFS’s capabilities, especially for scenarios involving layered filesystems, jails, containers, and storage optimization. Jason Harmening, who has been working on UnionFS for years, continues to contribute by addressing critical issues like vnode locking, whiteout management, and other systemic bugs. The project involves substantial code rewrites and careful coordination to ensure that changes are sound and aligned with the project’s goals. Notable reviews include D44288, D44601, D44788, and D45398.

Key Project Contributions:

  1. UnionFS Capabilities:
    • Apparent Modifications: Allows changes to read-only filesystems (e.g., CDROMs, NFS) without altering the original files. Useful for creating temporary or permanent private copies.
    • Jails: Enables multiple jails to share a base filesystem, simplifying updates and enhancing storage efficiency.
    • Containers: Supports pre-packaged container images with modifiable top layers, similar to Docker.
    • Storage Optimization: Stacks HDD-backed filesystems above SSD-backed ones, optimizing storage use while leveraging the advantages of both.
  2. Coordination and Development:
    • Olivier Certner is coordinating with Jason Harmening to continue the development and stabilization of UnionFS. Certner’s approach includes minimizing the scope of changes while ensuring they align with the broader goals of rewriting significant portions of the UnionFS code.
  3. Review Contributions:
    • D44288: Implemented VOP_UNP_* and removed special VSOCK vnode handling.
    • D44601: Addressed wild accesses to vnode private data and proposed testing forced unmounts.
    • D44788: Fixed numerous locking issues in unionfs_rename, ensuring minimal changes for stability.
    • D45398: Reworked the locking scheme to only lock a single vnode, which involved multiple rounds of review and a final commitment on July 13th.
  4. Consultations:
    • Whiteout Handling (D45987): Worked with Kirk McKusick and Jason Harmening to address whiteout entries during rename/rmdir operations in tmpfs, with implications for the metadata exported by UnionFS.

This project is a comprehensive effort to ensure that UnionFS is reliable, efficient, and well-suited for modern FreeBSD use cases, including jails, containers, and complex storage configurations.