Skip to content
hetticaPublic

About

FUSE-compatible userspace filesystems for IBM AIX

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Quality gate status Coverage

USFS: userspace file systems for IBM AIX

USFS is a 64-bit AIX filesystem kernel extension and a userspace client library. It provides FUSE-like functionality on AIX using an AIX-specific implementation. A FUSE adapter can make the client library compatible with the Linux FUSE API, making it easier to port projects that depend on FUSE.

Current project state

The first alpha release is available for focused testing. The core functionality works, with known issues. You can run the provided examples or conduct your own experiments. Do not use this alpha in production. Kernel extension failures can crash the system. Upgrade from this version will not be supported.

Build

Build natively on AIX with GCC, CMake 3.20+, GNU Make, Bash, RPM build tools, and the native AIX development tools:

cmake -S . -B build -G "Unix Makefiles" -DCMAKE_C_COMPILER=gcc
cd build
make package

Install and use

Run as root on an isolated, recoverable AIX host:

# Install and check status
rpm -ivh "build/packages/usfs-0.1.0-1.aix$(uname -v).$(uname -r).ppc.rpm"
usfsctl

### Run memfs example
# Main session
mkdir -p /mnt/usfs-mem
usfs_memfs /mnt/usfs-mem

# Separate session
printf 'USFS works\n' >/mnt/usfs-mem/hello.txt
cat /mnt/usfs-mem/hello.txt
umount /mnt/usfs-mem

### Run the read-only mirror example
# Main session
mkdir -p /mnt/usfs-mirror
usfs_mirror --source=/usr /mnt/usfs-mirror

# Separate session
ls /mnt/usfs-mirror
umount /mnt/usfs-mirror

The package installs /usr/lib/libusfs.a, /usr/include/usfs/usfs.h, and usfs.pc. The public header documents requests, callbacks, options and lifecycle contracts; the examples demonstrate their use. Mutable backends must implement conditional namespace mutations atomically.

In-place upgrades and replacement installs are rejected. To reinstall, unmount all USFS filesystems, stop the daemons, and prevent new device opens. Then run rpm -e usfs followed by rpm -ivh with the new RPM.

Trace

USFS integrates with standard AIX tracing facilities to capture kernel and request activity for diagnosis:

# Start a root-owned session and select where to save the raw trace.
usfsctl trace start --profile requests --output /tmp/usfs.trace
usfsctl trace status

# Reproduce the event. Pause and resume are optional.
usfsctl trace pause
usfsctl trace resume

# Stop records the raw trace and creates /tmp/usfs.trace.txt.
usfsctl trace stop

# Reformat the raw trace later, optionally choosing a report path.
usfsctl trace report /tmp/usfs.trace --output /tmp/usfs-report.txt

Possible profiles are core, requests (default), full.

Known limitations

Normal USFS unload/reload uses a resident device-dispatch proxy and requires existing USFS users to be torn down. The separate, explicitly unsafe proxy-removal command can still cause a kernel fault. See kernel proxy lifecycle for the protocol, maintenance commands, and verification requirements. Should not be reproducible during manual sequential execution of examples above.

USFS mounts do not support record locks, ACLs, privilege control lists, extended attributes, quotas, fclear, special-file creation, file ioctl, or pathconf/fpathconf. See unsupported filesystem operations for the complete list, observed errors, and important exceptions.

Roadmap

  • Technical preview — completed.
  • First alpha release — published; current stage.
  • Further testing, audit reports, and reliability improvements.
  • Beta release after further testing and stabilization.
  • Clarified compatibility and system requirements, documented WPAR support, performance tests.
  • First stable general-availability release.
  • s3fs and sshfs on AIX.

Further development will depend on community demand. Feedback is highly appreciated.

Performance

One initial performance test has been completed. See the performance summary for the results. More performance tests and improvements are planned for later stages of development.

Tests and coverage

Build and run tests directly on AIX with the out-of-source CMake workflow. For a complete non-performance campaign over SSH and a downloadable coverage archive, run:

bash collect-coverage.sh root@aix.example.com /ws/usfs-coverage

See the coverage archive guide for prerequisites, test scope, HTML review, and portable coverage exports.

About

FUSE-compatible userspace filesystems for IBM AIX

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages