On Thu 24-10-19 16:11:33, Yang Xu wrote: > For Q_QUOTAON, on old kernel we can use quotacheck -ug to > generate quota files. But in current kernel, we can also hide them > in system inodes and indicate them by using "quota" or project feature. > > For user or group quota, we can do as below(etc ext4): > mkfs.ext4 -F -o quota /dev/sda5 > mount /dev/sda5 /mnt > quotactl(QCMD(Q_QUOTAON, USRQUOTA), /dev/sda5, QFMT_VFS_V0, NULL); > > For project quota, we can do as below(etc ext4) > mkfs.ext4 -F -o quota,project /dev/sda5 > mount /dev/sda5 /mnt > quotactl(QCMD(Q_QUOTAON, PRJQUOTA), /dev/sda5, QFMT_VFS_V0, NULL); > > Signed-off-by: Yang Xu <xuyang2018.jy@xxxxxxxxxxxxxx> ... > The quota file must exist; it is normally created with the > .BR quotacheck (8) > -program. > +program. It also can been stored as hidden system inode. In this case, there > +are no visible quota files in filesystem and no need to use > +.BR quotacheck (8) > +program. This is indicated by 'quota' and 'project' features. > This operation requires privilege > .RB ( CAP_SYS_ADMIN ). > .TP 8 This is a good clarification. Thanks! I'd just somewhat expand this like: Quota information can be also stored in hidden system inodes for ext4, xfs, and other filesystems if the filesystem is configured so. In this case, there are no visible quota files and there is no need to use quotacheck(8). Quota information is always kept consistent by the filesystem and Q_QUOTAON quotactl only enables enforcement of quota limits. The presence of hidden system inodes with quota information is indicated by DQF_SYS_FILE flag in Q_GETINFO output. > @@ -638,7 +641,8 @@ The > .I id > argument is ignored. > .TP > -.B Q_XQUOTARM > +.B Q_XQUOTARM (Since linux 3.16) > +.\" 9da93f9b7cdf8ab28da6b364cdc1fafc8670b4dc Not sure if we need to specify commit ID here... Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR