Michael (Parker) Parker 1c2070eef5 Add disk quota support (#171)
* Start disk quota package

* Add filesystem based disk quotas

This uses the built in quota management services to manage quotas for EXT4. May potentially work on XFS but has not been tested.

See the docs for more information.

https://pelican.dev/docs/guides/disk-quotas/about

* fix issue with returns

builds were failing due to un-used err

* Start disk quota package

* Add filesystem based disk quotas

This uses the built in quota management services to manage quotas for EXT4. May potentially work on XFS but has not been tested.

See the docs for more information.

https://pelican.dev/docs/guides/disk-quotas/about

* fix issue with returns

builds were failing due to un-used err

* Start disk quota package

* Add filesystem based disk quotas

This uses the built in quota management services to manage quotas for EXT4. May potentially work on XFS but has not been tested.

See the docs for more information.

https://pelican.dev/docs/guides/disk-quotas/about

* fix issue with returns

builds were failing due to un-used err

* update quota management

update internal name for the panel id to Pid to avoid overlap with ID as the uuid

moves quota checking earlier to avoid an out of order problem

add logging to quota management

update detection of supported filesystems

update how directory xattr is handled

* update quota setting code

* replace syscall with sys/unix

use the updated and recommended "golang.org/x/sys/unix" package per https://go.googlesource.com/proposal/+/refs/heads/master/design/freeze-syscall.md

* update go mod

* update fsxattr to match the header docs.
    adds coxextsize and limits fsxpad to 8bytes

corrects some errors on filesystem type detection

handles when limits are lower than 0. Treats them as unlimited.

now locks exfs projects when working with them to avoid any issues

* better logging

reorganize handling limits being below 0

handle if the project id is outside the range

* Update quota handling

Better error handling
Only compiles quota management for linux
better path handling
mutex to make sure quota update happens at a time
atomic file handling for project files
uses better syscall option
more logging

* update fsquota version in go mod

need to update due to syscall.Stat_T being required.

* update and clean mod files

ran `go mod tidy` after merging onto main
2026-06-22 09:57:30 -04:00
2026-06-22 09:57:30 -04:00
2026-06-22 09:57:30 -04:00
2024-04-10 08:38:53 -07:00
2026-06-22 09:57:30 -04:00
2024-04-10 08:38:53 -07:00
2026-06-22 09:57:30 -04:00
2026-06-22 09:57:30 -04:00
2026-06-22 09:57:30 -04:00
2025-04-06 20:00:07 +02:00
2024-04-10 08:38:53 -07:00
2026-06-22 09:57:30 -04:00
2026-06-22 09:57:30 -04:00
2021-03-26 09:33:24 -07:00
2024-04-10 08:38:53 -07:00
2024-05-20 16:34:42 -07:00
2024-04-10 08:38:53 -07:00

Pelican Wings

Wings is Pelican's server control plane, built for the rapidly changing gaming industry and designed to be highly performant and secure. Wings provides an HTTP API allowing you to interface directly with running server instances, fetch server logs, generate backups, and control all aspects of the server lifecycle.

In addition, Wings ships with a built-in SFTP server allowing your system to remain free of Pelican specific dependencies, and allowing users to authenticate with the same credentials they would normally use to access the Panel.

Documentation

Reporting Issues

Feel free to report any wings specific issues or feature requests in GitHub Issues.

S
Description
No description provided
Readme MIT 5.4 MiB
Languages
Go 99.6%
Nix 0.2%
Makefile 0.1%