Re: [v15 0/4] ext4: add project quota support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dmitry,

Please check following linkage. It includes all the patches I've made
for ext4 project quota. Unfortunately, multiple tools need to be
patched, including 1) patch e2fsprogs 2) patch quota-tools 3) patch
linux kernel 4) compile project_manage.

Please let me know if there is any problem.

Thanks,
Li Xi

On Wed, Sep 23, 2015 at 9:32 PM, Dmitry Monakhov <dmonakhov@xxxxxxxxxx> wrote:
> Li Xi <pkuelelixi@xxxxxxxxx> writes:
>
>> Hi Jan Kara,
>>
>> Sorry, I forgot to mention that we run the xfstests for both XFS and
>> Ext4 with and without these patches. And still, some (but not too
>> many) of the tests fails, but the failed tests are the same no matter
>> the patches are applied or not. And we didn't see any project quota
>> related tests fails.
> BTW. Where I can find userspace tools to play with this feature?
>>
>> Regards,
>> Li Xi
>>
>> On Wed, Sep 23, 2015 at 8:31 PM, Jan Kara <jack@xxxxxxx> wrote:
>>> On Sun 13-09-15 21:20:29, Li Xi 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.
>>>
>>> With the last version of the patches, there was only one outstanding issue
>>> and that was whether xfstests for XFS pass correctly (especially the
>>> project quota related ones). Have you been able to verify this?
>>>
>>>                                                                 Honza
>>>
>>>>
>>>> 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:
>>>> * v15 <- v14:
>>>>  - Rebase to newest master branch of git repository (b0a1ea51b).
>>>> * v14 <- v13:
>>>>  - Cleanup ioctl of setting project ID;
>>>>  - Do not check project quota inode number specially;
>>>>  - Check isize when extract project ID from disk;
>>>>  - Rebase to latest kernel (4.0.0)
>>>> * v13 <- v12:
>>>>  - Update inode size check of project ID.
>>>> * v12 <- v11:
>>>>  - Relax the permission check when setting project ID.
>>>> * v11 <- v10:
>>>>  - Remove project quota mount option;
>>>>  - Fix permission check when setting project ID.
>>>> * v10 <- v9:
>>>>  - Remove non-journaled project quota interface;
>>>>  - Only allow admin to read project quota info;
>>>>  - Cleanup FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface.
>>>> * v9 <- v8:
>>>>  - Remove non-journaled project quota;
>>>>  - Rebase to newest dev branch of ext4 repository (3.19.0-rc3).
>>>> * 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().
>>>>
>>>> v14: http://article.gmane.org/gmane.linux.kernel.api/10345
>>>> v13: http://www.spinics.net/lists/linux-fsdevel/msg85205.html
>>>> v12: http://www.spinics.net/lists/linux-fsdevel/msg84905.html
>>>> v11: http://www.spinics.net/lists/linux-ext4/msg47450.html
>>>> v10: http://www.spinics.net/lists/linux-ext4/msg47413.html
>>>> v9: http://www.spinics.net/lists/linux-ext4/msg47326.html
>>>> v8: http://www.spinics.net/lists/linux-ext4/msg46545.html
>>>> 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 (4):
>>>>   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          |   85 +++++++----
>>>>  fs/ext4/ialloc.c        |    7 +
>>>>  fs/ext4/inode.c         |   28 ++++
>>>>  fs/ext4/ioctl.c         |  367 ++++++++++++++++++++++++++++++++++++-----------
>>>>  fs/ext4/namei.c         |   19 +++
>>>>  fs/ext4/super.c         |   57 +++++++-
>>>>  fs/xfs/libxfs/xfs_fs.h  |   47 +++----
>>>>  include/uapi/linux/fs.h |   33 +++++
>>>>  8 files changed, 490 insertions(+), 153 deletions(-)
>>>>
>>> --
>>> Jan Kara <jack@xxxxxxxx>
>>> SUSE Labs, CR
--
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



[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux