All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] quota: add project quota support
@ 2014-09-24 14:04 Li Xi
  2014-09-24 14:04 ` [PATCH 1/4] Adds general codes to enforces project quota limits Li Xi
                   ` (3 more replies)
  0 siblings, 4 replies; 41+ messages in thread
From: Li Xi @ 2014-09-24 14:04 UTC (permalink / raw)
  To: linux-fsdevel, linux-ext4, linux-api, tytso, adilger, jack, viro,
	hch, dmonakhov

The following patches propose an implementation of project quota
support for ext4. A project is an aggregate of unrelated inodes
which might scatter in different directories. Inodes belongs to a
project possesses a same identification i.e. 'project ID', just
like every inode has its user/group identification. The following
patches adds project quota as supplement to the former uer/group
quota types.

The semantics of ext4 project quota is consistent with XFS. Each
directory can have EXT4_INODE_PROJINHERIT flag set. When the
EXT4_INODE_PROJINHERIT flag of a parent directory is not set, a
newly created inode under that directory will have a default project
ID (i.e. 0). And its EXT4_INODE_PROJINHERIT flag is not set either.
When this flag is set on a directory, following rules will be kept:

1) The newly created inode under that directory will inherit both
the EXT4_INODE_PROJINHERIT flag and the project ID from its parent
directory.

2) Hard-linking a inode with different project ID into that directory
will fail with errno EXDEV.

3) Renaming a inode with different project ID into that directory
will fail with errno EXDEV. However, 'mv' command will detect this
failure and copy the renamed inode to a new inode in the directory.
Thus, this new inode will inherit both the project ID and
EXT4_INODE_PROJINHERIT flag.

4) If the project quota of that ID is being enforced, statfs() on
that directory will take the quotas as another upper limits along
with the capacity of the file system, i.e. the total block/inode
number will be the minimum of the quota limits and file system
capacity.

Changelog:
* v4 <- v3:
 - Do not check project feature when set/get project ID;
 - Use EXT4_MAXQUOTAS instead of MAXQUOTAS in ext4 patches;
 - Remove unnecessary change of fs/quota/dquot.c;
 - Remove CONFIG_QUOTA_PROJECT.
* v3 <- v2:
 - Add EXT4_INODE_PROJINHERIT semantics.
* v2 <- v1:
 - Add ioctl interface for setting/getting project;
 - Add EXT4_FEATURE_RO_COMPAT_PROJECT;
 - Add get_projid() method in struct dquot_operations;
 - Add error check of ext4_inode_projid_set/get().

v3: http://www.spinics.net/lists/linux-ext4/msg45184.html
v2: http://www.spinics.net/lists/linux-ext4/msg44695.html
v1: http://article.gmane.org/gmane.comp.file-systems.ext4/45153

Any comments or feedbacks are appreciated.

Regards,
                                         - Li Xi

Li Xi (4):
  Adds general codes to enforces project quota limits
  Adds project ID support for ext4
  Adds project quota support for ext4
  Adds ioctl interface support for ext4 project

 Documentation/filesystems/ext4.txt |    4 +
 fs/ext4/ext4.h                     |   31 +++++++--
 fs/ext4/ialloc.c                   |    6 ++
 fs/ext4/inode.c                    |   29 ++++++++-
 fs/ext4/ioctl.c                    |   85 ++++++++++++++++++++++++
 fs/ext4/namei.c                    |   10 +++
 fs/ext4/super.c                    |  124 ++++++++++++++++++++++++++++++++---
 fs/quota/dquot.c                   |   16 ++++-
 fs/quota/quota.c                   |    5 +-
 fs/quota/quotaio_v2.h              |    6 +-
 include/linux/quota.h              |    2 +
 include/uapi/linux/quota.h         |    6 +-
 12 files changed, 299 insertions(+), 25 deletions(-)


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

end of thread, other threads:[~2014-09-30 20:07 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-24 14:04 [PATCH 0/4] quota: add project quota support Li Xi
2014-09-24 14:04 ` [PATCH 1/4] Adds general codes to enforces project quota limits Li Xi
2014-09-24 16:08   ` Jan Kara
     [not found]   ` <1411567470-31799-2-git-send-email-lixi-LfVdkaOWEx8@public.gmane.org>
2014-09-24 16:14     ` Christoph Hellwig
     [not found]       ` <20140924161417.GA1978-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-09-24 17:10         ` Jan Kara
     [not found]           ` <20140924171020.GF27000-+0h/O2h83AeN3ZZ/Hiejyg@public.gmane.org>
2014-09-24 17:13             ` Christoph Hellwig
     [not found]               ` <20140924171306.GA23874-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-09-24 17:37                 ` Jan Kara
2014-09-30 20:07     ` Jan Kara
2014-09-24 14:04 ` [PATCH 2/4] Adds project ID support for ext4 Li Xi
2014-09-24 17:11   ` Jan Kara
2014-09-25  1:09     ` Li Xi
2014-09-24 14:04 ` [PATCH 3/4] Adds project quota " Li Xi
     [not found]   ` <1411567470-31799-4-git-send-email-lixi-LfVdkaOWEx8@public.gmane.org>
2014-09-24 17:31     ` Jan Kara
     [not found]       ` <20140924173123.GH27000-+0h/O2h83AeN3ZZ/Hiejyg@public.gmane.org>
2014-09-25  1:28         ` Li Xi
     [not found]           ` <CAPTn0cB8X3DYprX-oKCu8aV5OLLfJJ2rh9YvMY7re69gi1s-LA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-09-25 11:55             ` Jan Kara
2014-09-24 14:04 ` [PATCH 4/4] Adds ioctl interface support for ext4 project Li Xi
2014-09-24 16:25   ` Jan Kara
2014-09-24 16:25     ` Jan Kara
2014-09-24 16:26     ` Christoph Hellwig
2014-09-24 16:26       ` Christoph Hellwig
2014-09-24 17:01       ` Jan Kara
2014-09-24 17:01         ` Jan Kara
2014-09-25  7:59         ` Dave Chinner
2014-09-25 11:34           ` lixi
2014-09-25 11:34             ` lixi
     [not found]             ` <C31A739F-4502-4B40-9AE3-F2FE49291657-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-09-26  0:10               ` Dave Chinner
2014-09-26  0:10                 ` Dave Chinner
2014-09-26  2:45                 ` Li Xi
2014-09-26  2:45                   ` Li Xi
2014-09-25 13:41           ` Theodore Ts'o
     [not found]             ` <20140925134136.GE4592-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2014-09-25 22:22               ` Dave Chinner
2014-09-25 22:22                 ` Dave Chinner
2014-09-25 13:52           ` Jan Kara
2014-09-25 13:52             ` Jan Kara
2014-09-25 22:42             ` Dave Chinner
2014-09-26 12:01               ` Theodore Ts'o
2014-09-26 12:01                 ` Theodore Ts'o
2014-09-29 15:55               ` Jan Kara
2014-09-29 15:55                 ` Jan Kara
2014-09-25  7:26     ` Dave Chinner
     [not found]   ` <1411567470-31799-5-git-send-email-lixi-LfVdkaOWEx8@public.gmane.org>
2014-09-24 16:43     ` Jan Kara

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.