linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christian Brauner <brauner@kernel.org>
To: cem@kernel.org
Cc: hughd@google.com, jack@suse.cz, linux-mm@kvack.org,
	linux-fsdevel@vger.kernel.org, djwong@kernel.org
Subject: Re: [PATCH 0/6] shmem: Add user and group quota support for tmpfs
Date: Wed, 5 Apr 2023 10:52:44 +0200	[thread overview]
Message-ID: <20230405-klarkommen-zellkern-03af0950b80f@brauner> (raw)
In-Reply-To: <20230403084759.884681-1-cem@kernel.org>

On Mon, Apr 03, 2023 at 10:47:53AM +0200, cem@kernel.org wrote:
> From: Carlos Maiolino <cmaiolino@redhat.com>
> 
> Hi folks. this work has been done originally by Lukas, but he left the company,
> so I'm taking over his work from where he left it of. This series is virtually
> done, and he had updated it with comments from the last version, but, I'm

I've commented on the last version:

https://lore.kernel.org/linux-fsdevel/20221129112133.rrpoywlwdw45k3qa@wittgenstein

trying to point out that tmpfs can be mounted in user namespaces. Which
means that the quota uids and gids need to take the idmapping of the
user namespace in which the tmpfs instances is mounted in into account;
not the one on the host.

See the link above for some details. Before we can merge this it would
be very good if we could get tests that verify tmpfs being mounted
inside a userns with quotas enabled because I don't think this is
covered yet by xfstests. Or you punt on it for now and restricted quotas
to tmpfs instances mounted on the host.

> initially posting it as a RFC because it's been a while since he posted the
> last version.
> Most of what I did here was rebase his last work on top of current Linus's tree.
> 
> Honza, there is one patch from you in this series, which I believe you had it
> suggested to Lukas on a previous version.
> 
> 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].
> 
> 
> 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 |  28 ++
>  fs/Kconfig                          |  12 +
>  fs/quota/dquot.c                    |   2 +-
>  include/linux/shmem_fs.h            |  25 ++
>  include/uapi/linux/quota.h          |   1 +
>  mm/Makefile                         |   2 +-
>  mm/shmem.c                          | 452 +++++++++++++++++++++-------
>  mm/shmem_quota.c                    | 327 ++++++++++++++++++++
>  8 files changed, 740 insertions(+), 109 deletions(-)
>  create mode 100644 mm/shmem_quota.c
> 
> -- 
> 2.30.2
> 

  parent reply	other threads:[~2023-04-05  8:52 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-03  8:47 [PATCH 0/6] shmem: Add user and group quota support for tmpfs cem
2023-04-03  8:47 ` [PATCH 1/6] shmem: make shmem_inode_acct_block() return error cem
2023-04-04 10:59   ` Jan Kara
2023-04-03  8:47 ` [PATCH 2/6] shmem: make shmem_get_inode() return ERR_PTR instead of NULL cem
2023-04-03 10:23   ` Jan Kara
2023-04-11  7:47     ` Carlos Maiolino
2023-04-11  8:14       ` Jan Kara
2023-04-11  8:41         ` Carlos Maiolino
2023-04-03 21:10   ` kernel test robot
2023-04-04  4:26   ` kernel test robot
2023-04-03  8:47 ` [PATCH 3/6] quota: Check presence of quota operation structures instead of ->quota_read and ->quota_write callbacks cem
2023-04-03  8:47 ` [PATCH 4/6] shmem: prepare shmem quota infrastructure cem
2023-04-04 12:34   ` Jan Kara
2023-04-04 13:48     ` Carlos Maiolino
2023-04-05 11:04       ` Jan Kara
2023-04-12  9:44       ` Carlos Maiolino
2023-04-12 10:04         ` Jan Kara
2023-04-12 11:14           ` Carlos Maiolino
2023-04-12 11:23             ` Jan Kara
2023-04-03  8:47 ` [PATCH 5/6] shmem: quota support cem
2023-04-03 14:31   ` kernel test robot
2023-04-03 18:46   ` Darrick J. Wong
2023-04-04 13:41     ` Carlos Maiolino
2023-04-04 16:45       ` Darrick J. Wong
2023-04-03 22:03   ` kernel test robot
2023-04-04  6:22   ` kernel test robot
2023-04-05 11:42   ` Jan Kara
2023-04-11  9:37     ` Carlos Maiolino
2023-04-11 13:03       ` Jan Kara
2023-04-03  8:47 ` [PATCH 6/6] Add default quota limit mount options cem
2023-04-05  8:52 ` Christian Brauner [this message]
2023-04-05 10:44   ` [PATCH 0/6] shmem: Add user and group quota support for tmpfs Carlos Maiolino
2023-04-05 13:11     ` Christian Brauner
2023-04-06  8:08       ` Carlos Maiolino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230405-klarkommen-zellkern-03af0950b80f@brauner \
    --to=brauner@kernel.org \
    --cc=cem@kernel.org \
    --cc=djwong@kernel.org \
    --cc=hughd@google.com \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).