mbox series

[v2,0/3,RFC] shmem: user and group quota support for tmpfs

Message ID 20221121142854.91109-1-lczerner@redhat.com (mailing list archive)
Headers show
Series shmem: user and group quota support for tmpfs | expand

Message

Lukas Czerner Nov. 21, 2022, 2:28 p.m. UTC
people have been asking for quota support in tmpfs many times in the past
mostly to avoid one malicious user, or misbehaving user/program to consume
all of the system memory. This has been partially solved with the size
mount option, but some problems still prevail.

One of the problems is the fact that /dev/shm is still generally unprotected
with this and another is administration overhead of managing multiple tmpfs
mounts and lack of more fine grained control.

Quota support can solve all these problems in a somewhat standard way
people are already familiar with from regular file systems. It can give us
more fine grained control over how much memory user/groups can consume.
Additionally it can also control number of inodes and with special quota
mount options introduced with a second patch we can set global limits
allowing us to replace the size mount option with quota entirely.

Currently the standard userspace quota tools (quota, xfs_quota) are only
using quotactl ioctl which is expecting a block device. I patched quota [1]
and xfs_quota [2] to use quotactl_fd in case we want to run the tools on
mount point directory to work nicely with tmpfs.

The implementation was tested on patched version of xfstests [3].

Changes in v2:
  - Instead of using quota format QFMT_VFS_V1 with all the complexities
    around writing/reading quota files, instroduce new in-memory only
    quota format (PATCH 1/3) and use that instead as suggested by
    Jan Kara.
  - Rename global quota limits mount options to something much more
    sensible as suggested by Darrick J. Wong.
  - Improve documentation.
  - Check if qlobal quota limits aren't too large.

-Lukas

[1] https://github.com/lczerner/quota/tree/quotactl_fd_support
[2] https://github.com/lczerner/xfsprogs/tree/quotactl_fd_support
[3] https://github.com/lczerner/xfstests/tree/tmpfs_quota_support