Xi, Just a question, do you have any test scripts or xfstest cases for this patchset? Thanks, Jon On Tue, Dec 9, 2014 at 12:22 AM, Li Xi <pkuelelixi@xxxxxxxxx> wrote: > 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 that belong > to the same project possess an identical identification i.e. > 'project ID', just like every inode has its user/group > identification. The following patches add 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: > * v8 <- v7: > - Rebase to newest dev branch of ext4 repository (3.18.0_rc3). > * v7 <- v6: > - Map ext4 inode flags to xflags of struct fsxattr; > - Add patch to cleanup ext4 inode flag definitions. > * v6 <- v5: > - Add project ID check for cross rename; > - Remove patch of EXT4_IOC_GETPROJECT/EXT4_IOC_SETPROJECT ioctl > * v5 <- v4: > - Check project feature when set/get project ID; > - Do not check project feature for project quota; > - Add support of FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR. > * 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(). > > v7: http://www.spinics.net/lists/linux-fsdevel/msg80404.html > v6: http://www.spinics.net/lists/linux-fsdevel/msg80022.html > v5: http://www.spinics.net/lists/linux-api/msg04840.html > v4: http://lwn.net/Articles/612972/ > 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 (5): > vfs: adds general codes to enforces project quota limits > ext4: adds project ID support > ext4: adds project quota support > ext4: adds FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface support > ext4: cleanup inode flag definitions > > fs/ext4/ext4.h | 190 +++++++++++++++++++++---- > fs/ext4/ialloc.c | 6 + > fs/ext4/inode.c | 29 ++++ > fs/ext4/ioctl.c | 330 +++++++++++++++++++++++++++++++------------- > fs/ext4/namei.c | 17 +++ > fs/ext4/super.c | 96 +++++++++++-- > fs/quota/dquot.c | 35 ++++- > fs/quota/quota.c | 8 +- > fs/quota/quotaio_v2.h | 6 +- > fs/xfs/xfs_fs.h | 47 +++---- > include/linux/quota.h | 2 + > include/uapi/linux/fs.h | 59 ++++++++ > include/uapi/linux/quota.h | 6 +- > 13 files changed, 650 insertions(+), 181 deletions(-) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html