FUSE-based Disk Quota System built for speed and compatibility.
  • C++ 95.6%
  • CMake 2.8%
  • Makefile 1.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Robert Jansen a39bc561fb
Some checks failed
Build Multi-Architecture / Dist (push) Has been cancelled
Lint / Lint (push) Has been cancelled
add testing
2026-09-10 14:28:27 +02:00
.github add testing 2026-09-10 14:28:27 +02:00
external fix some possible issues, bump libfuse 2026-08-10 08:50:23 +02:00
patches update libfuse, moar performance (lock cleanup) 2026-07-08 09:45:02 +02:00
src add testing 2026-09-10 14:28:27 +02:00
tests add testing 2026-09-10 14:28:27 +02:00
.clang-format fix binary names 2026-01-12 15:54:39 +01:00
.dockerignore switch to musl, format code 2026-01-12 15:45:42 +01:00
.gitignore upload code 2026-01-07 13:01:11 +01:00
.gitmodules upload code 2026-01-07 13:01:11 +01:00
CMakeLists.txt add testing 2026-09-10 14:28:27 +02:00
Dockerfile.musl update libfuse, moar performance (lock cleanup) 2026-07-08 09:45:02 +02:00
LICENSE upload code 2026-01-07 13:01:11 +01:00
Makefile add testing 2026-09-10 14:28:27 +02:00
README.md add testing 2026-09-10 14:28:27 +02:00
SECURITY.md Fix supported versions 2026-04-17 23:04:44 +02:00

Calagopus Logo

fusequota

FuseQuota is a small program that uses FUSE to mount a virtual filesystem which enforces a disk quota on files created within it. It is designed for usage in Calagopus Wings to limit the disk usage of servers on systems that do not support native quotas.

Features

  • Enforces a maximum disk usage quota on files created within the mounted filesystem.
  • Transparent integration with existing applications using standard file operations.
  • Configurable quota size via socket communication.
  • Built using FUSE for cross-platform compatibility.
  • Using Modern Passthrough FUSE API for better read performance.
  • Supports dynamic quota adjustments without unmounting the filesystem.
  • Written in C++ for performance and efficiency.

Requirements

  • C++ compiler with C++23 support
  • CMake 3.24 or higher
  • Ninja build system

Building

make

Testing

The test suite uses GoogleTest. It is picked up from the system when libgtest-dev (or equivalent) is installed and downloaded by CMake otherwise.

make test

Unit tests cover the quota accounting and the control socket protocol. Integration tests mount a real filesystem with the built binary and therefore need access to /dev/fuse; they are skipped when it is unavailable. Set FUSEQUOTA_REQUIRE_FUSE=1 to turn that skip into a failure, or run only one half with ctest --test-dir build -L unit / -L integration.