linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V5 0/6] shmem: Add user and group quota support for tmpfs
@ 2023-07-17 11:52 cem
  2023-07-17 11:52 ` [PATCH 1/6] shmem: make shmem_inode_acct_block() return error cem
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: cem @ 2023-07-17 11:52 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: jack, akpm, viro, linux-mm, djwong, hughd, brauner, mcgrof

From: Carlos Maiolino <cem@kernel.org>

Hello folks.

This updates the previous series, to improve error handling of
tmpfs quota options.

This new version changes only patch 5/6 "shmem: quota support", and it only adds
a conditional if fc->user_ns != &init_user_ns, so there isn't much logic change
on the overall patch.

This has also been sync'ed to today Linus's TOT, and they should apply cleanly on
top of that.

Honza, the overall logic isn't changed, but since there's new code in here, I opted
to remove your RwB from this patch, would you be so kind to RwB it again?

Christian, could you please also review this?

As before, details are within each patch.

The original cover-letter follows...

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].

[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


Jan Kara (1):
  quota: Check presence of quota operation structures instead of
    ->quota_read and ->quota_write callbacks

Lukas Czerner (5):
  shmem: make shmem_inode_acct_block() return error
  shmem: make shmem_get_inode() return ERR_PTR instead of NULL
  shmem: prepare shmem quota infrastructure
  shmem: quota support
  Add default quota limit mount options

 Documentation/filesystems/tmpfs.rst |  31 ++
 fs/Kconfig                          |  12 +
 fs/quota/dquot.c                    |   2 +-
 include/linux/shmem_fs.h            |  28 ++
 include/uapi/linux/quota.h          |   1 +
 mm/Makefile                         |   2 +-
 mm/shmem.c                          | 465 +++++++++++++++++++++-------
 mm/shmem_quota.c                    | 350 +++++++++++++++++++++
 8 files changed, 783 insertions(+), 108 deletions(-)
 create mode 100644 mm/shmem_quota.c

Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
-- 
2.30.2

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-07-17 11:54 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-17 11:52 [PATCH V5 0/6] shmem: Add user and group quota support for tmpfs cem
2023-07-17 11:52 ` [PATCH 1/6] shmem: make shmem_inode_acct_block() return error cem
2023-07-17 11:52 ` [PATCH 2/6] shmem: make shmem_get_inode() return ERR_PTR instead of NULL cem
2023-07-17 11:52 ` [PATCH 3/6] quota: Check presence of quota operation structures instead of ->quota_read and ->quota_write callbacks cem
2023-07-17 11:52 ` [PATCH 4/6] shmem: prepare shmem quota infrastructure cem
2023-07-17 11:52 ` [PATCH 5/6] shmem: quota support cem
2023-07-17 11:52 ` [PATCH 6/6] Add default quota limit mount options cem

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).