From: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
To: Dave Chinner <david@fromorbit.com>
Cc: Li Xi <pkuelelixi@gmail.com>,
linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-api@vger.kernel.org, tytso@mit.edu, adilger@dilger.ca,
jack@suse.cz, viro@zeniv.linux.org.uk, hch@infradead.org,
dmonakhov@openvz.org, "Eric W. Biederman" <ebiederm@xmission.com>
Subject: Re: [v8 4/5] ext4: adds FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface support
Date: Fri, 23 Jan 2015 14:58:09 +0300 [thread overview]
Message-ID: <54C23751.7000009@yandex-team.ru> (raw)
In-Reply-To: <20150123015307.GD24722@dastard>
On 23.01.2015 04:53, Dave Chinner wrote:
> On Thu, Jan 22, 2015 at 06:28:51PM +0300, Konstantin Khlebnikov wrote:
>> On 09.12.2014 08:22, Li Xi wrote:
>>> +static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
>>> +{
>>> + struct inode *inode = file_inode(filp);
>>> + struct super_block *sb = inode->i_sb;
>>> + struct ext4_inode_info *ei = EXT4_I(inode);
>>> + int err;
>>> + handle_t *handle;
>>> + kprojid_t kprojid;
>>> + struct ext4_iloc iloc;
>>> + struct ext4_inode *raw_inode;
>>> +
>>> + struct dquot *transfer_to[EXT4_MAXQUOTAS] = { };
>>> +
>>> + /* Make sure caller can change project. */
>>> + if (!capable(CAP_SYS_ADMIN))
>>> + return -EACCES;
>>> +
>>> + if (projid != EXT4_DEF_PROJID
>>> + && !EXT4_HAS_RO_COMPAT_FEATURE(sb,
>>> + EXT4_FEATURE_RO_COMPAT_PROJECT))
>>> + return -EOPNOTSUPP;
>>> +
>>> + if (!EXT4_HAS_RO_COMPAT_FEATURE(sb,
>>> + EXT4_FEATURE_RO_COMPAT_PROJECT)) {
>>> + BUG_ON(__kprojid_val(EXT4_I(inode)->i_projid)
>>> + != EXT4_DEF_PROJID);
>>> + if (projid != EXT4_DEF_PROJID)
>>> + return -EOPNOTSUPP;
>>> + else
>>> + return 0;
>>> + }
>>> +
>>> + kprojid = make_kprojid(&init_user_ns, (projid_t)projid);
>>
>> Maybe current_user_ns()?
>> This code should be user-namespace aware from the beginning.
>
> No, the code is correct. Project quotas have nothing to do with
> UIDs and so should never have been included in the uid/gid
> namespace mapping infrastructure in the first place.
Right, but user-namespace provides id mapping for project-id too.
This infrastructure adds support for nested project quotas with
virtualized ids in sub-containers. I couldn't say that this is
must have feature but implementation is trivial because whole
infrastructure is already here.
>
> Point in case: directory subtree quotas can be used as a resource
> controller for limiting space usage within separate containers that
> share the same underlying (large) filesystem via mount namespaces.
That's exactly my use-case: 'sub-volumes' for containers with
quota for space usage/inodes count.
next prev parent reply other threads:[~2015-01-23 11:58 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-09 5:22 [v8 0/5] ext4: add project quota support Li Xi
2014-12-09 5:22 ` [v8 1/5] vfs: adds general codes to enforces project quota limits Li Xi
2014-12-09 5:22 ` [v8 2/5] ext4: adds project ID support Li Xi
2015-01-07 23:11 ` Andreas Dilger
2015-01-08 8:51 ` Jan Kara
2015-01-15 7:52 ` Li Xi
[not found] ` <1418102548-5469-3-git-send-email-lixi-LfVdkaOWEx8@public.gmane.org>
2015-01-08 8:26 ` Jan Kara
2015-01-08 22:20 ` Andreas Dilger
2015-01-09 9:47 ` Jan Kara
[not found] ` <20150109094758.GA2576-+0h/O2h83AeN3ZZ/Hiejyg@public.gmane.org>
2015-01-09 23:46 ` Dave Chinner
2015-01-12 17:01 ` Jan Kara
2014-12-09 5:22 ` [v8 3/5] ext4: adds project quota support Li Xi
2015-01-06 20:01 ` Andreas Dilger
2015-01-06 21:52 ` Jan Kara
2014-12-09 5:22 ` [v8 4/5] ext4: adds FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface support Li Xi
2014-12-09 22:57 ` Dave Chinner
2015-01-22 15:20 ` Konstantin Khlebnikov
2015-01-22 15:59 ` Jan Kara
2015-01-22 18:35 ` Konstantin Khlebnikov
[not found] ` <20150122155900.GB3062-+0h/O2h83AeN3ZZ/Hiejyg@public.gmane.org>
2015-01-23 1:39 ` Dave Chinner
2015-01-22 15:28 ` Konstantin Khlebnikov
[not found] ` <54C11733.7080801-XoJtRXgx1JseBXzfvpsJ4g@public.gmane.org>
2015-01-23 1:53 ` Dave Chinner
2015-01-23 11:58 ` Konstantin Khlebnikov [this message]
2015-01-23 23:30 ` Dave Chinner
2015-01-23 23:59 ` Andy Lutomirski
[not found] ` <CALCETrXPCrOTrkoAMuW2os=z6anaEfv4F4D2yDxo6VtCuEtRZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-27 8:02 ` Dave Chinner
2015-01-27 10:45 ` Konstantin Khlebnikov
2015-01-28 0:37 ` Dave Chinner
2015-02-04 15:22 ` Konstantin Khlebnikov
[not found] ` <20150204225844.GA12722@dastard>
2015-02-05 9:32 ` Konstantin Khlebnikov
2015-02-05 16:38 ` Jan Kara
2015-02-05 21:05 ` Dave Chinner
2015-01-28 0:45 ` Andy Lutomirski
[not found] ` <1418102548-5469-1-git-send-email-lixi-LfVdkaOWEx8@public.gmane.org>
2014-12-09 5:22 ` [v8 5/5] ext4: cleanup inode flag definitions Li Xi
[not found] ` <1418102548-5469-6-git-send-email-lixi-LfVdkaOWEx8@public.gmane.org>
2015-01-06 20:05 ` Andreas Dilger
2015-01-26 18:46 ` [v8 0/5] ext4: add project quota support jon ernst
2015-02-13 2:00 ` Li Xi
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=54C23751.7000009@yandex-team.ru \
--to=khlebnikov@yandex-team.ru \
--cc=adilger@dilger.ca \
--cc=david@fromorbit.com \
--cc=dmonakhov@openvz.org \
--cc=ebiederm@xmission.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-api@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=pkuelelixi@gmail.com \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.