• Aditya Kali's avatar
    ext4: make quota as first class supported feature · 7c319d32
    Aditya Kali authored
    This patch adds support for quotas as a first class feature in ext4;
    which is to say, the quota files are stored in hidden inodes as file
    system metadata, instead of as separate files visible in the file system
    directory hierarchy.
    
    It is based on the proposal at:                                                                                                           
    https://ext4.wiki.kernel.org/index.php/Design_For_1st_Class_Quota_in_Ext4
    
    This patch introduces a new feature - EXT4_FEATURE_RO_COMPAT_QUOTA
    which, when turned on, enables quota accounting at mount time
    iteself. Also, the quota inodes are stored in two additional superblock
    fields.  Some changes introduced by this patch that should be pointed
    out are:
    
    1) Two new ext4-superblock fields - s_usr_quota_inum and
       s_grp_quota_inum for storing the quota inodes in use.
    2) Default quota inodes are: inode#3 for tracking userquota and inode#4
       for tracking group quota. The superblock fields can be set to use
       other inodes as well.
    3) If the QUOTA feature and corresponding quota inodes are set in
       superblock, the quota usage tracking is turned on at mount time. On
       'quotaon' ioctl, the quota limits enforcement is turned
       on. 'quotaoff' ioctl turns off only the limits enforcement in this
       case.
    4) When QUOTA feature is in use, the quota mount options 'quota',
       'usrquota', 'grpquota' are ignored by the kernel.
    5) mke2fs or tune2fs can be used to set the QUOTA feature and initialize
       quota inodes. The default reserved inodes will not be visible to user
       as regular files.
    6) The quota-tools will need to be modified to support hidden quota
       files on ext4. E2fsprogs will also include support for creating and
       fixing quota files.
    7) Support is only for the new V2 quota file format.
    Tested-by: default avatarJan Kara <jack@suse.cz>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Reviewed-by: default avatarJohann Lombardi <johann@whamcloud.com>
    Signed-off-by: default avatarAditya Kali <adityakali@google.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    7c319d32
super.c 150 KB