On Wed 06-11-19 18:40:36, Chengguang Xu wrote: > ---- 在 星期三, 2019-11-06 17:49:24 Jan Kara <jack@xxxxxxx> 撰写 ---- > > On Wed 06-11-19 12:37:35, Chengguang Xu wrote: > > > ---- 在 星期二, 2019-10-15 19:25:23 Jan Kara <jack@xxxxxxx> 撰写 ---- > > > > On Tue 15-10-19 18:23:27, Chengguang Xu wrote: > > > > > Setting softlimit larger than hardlimit seems meaningless > > > > > for disk quota but currently it is allowed. In this case, > > > > > there may be a bit of comfusion for users when they run > > > > > df comamnd to directory which has project quota. > > > > > > > > > > For example, we set 20M softlimit and 10M hardlimit of > > > > > block usage limit for project quota of test_dir(project id 123). > > > > > > > > > > [root@hades mnt_ext4]# repquota -P -a > > > > > *** Report for project quotas on device /dev/loop0 > > > > > Block grace time: 7days; Inode grace time: 7days > > > > > Block limits File limits > > > > > Project used soft hard grace used soft hard grace > > > > > ---------------------------------------------------------------------- > > > > > 0 -- 13 0 0 2 0 0 > > > > > 123 -- 10237 20480 10240 5 200 100 > > > > > > > > > > The result of df command as below: > > > > > > > > > > [root@hades mnt_ext4]# df -h test_dir > > > > > Filesystem Size Used Avail Use% Mounted on > > > > > /dev/loop0 20M 10M 10M 50% /home/cgxu/test/mnt_ext4 > > > > > > > > > > Even though it looks like there is another 10M free space to use, > > > > > if we write new data to diretory test_dir(inherit project id), > > > > > the write will fail with errno(-EDQUOT). > > > > > > > > > > After this patch, the df result looks like below. > > > > > > > > > > [root@hades mnt_ext4]# df -h test_dir > > > > > Filesystem Size Used Avail Use% Mounted on > > > > > /dev/loop0 10M 10M 3.0K 100% /home/cgxu/test/mnt_ext4 > > > > > > > > > > Signed-off-by: Chengguang Xu <cgxu519@xxxxxxxxxxxx> > > > > > --- > > > > > - Fix a bug in the limit setting logic. > > > > > > > > Thanks for the patch! It looks good to me. You can add: > > > > > > > > Reviewed-by: Jan Kara <jack@xxxxxxx> > > > > > > > > > > Hi Jan, > > > > > > I have a proposal for another direction. > > > Could we add a check for soft limit in quota layer when setting the value? > > > So that we could not bother with specific file systems on statfs(). > > > > What do you mean exactly? To not allow softlimit to be larger than > > hardlimit? That would make some sense but I don't think the risk of > > breaking some user that accidentally depends on current behavior is worth > > the few checks we can save... > > > > Actually, I thought exactly same as you when I wrote my patch for > statfs() of ext4. However, even though softlimit > hardlimit, we cannot > allow user to use blocks or inode more than hardlimit. IOW, the limit is > always there and fixed in this situation. So how about set softlimit > to hardlimit when softlimit > hardlimit and return with success? Well, the softlimit > hardlimit won't have any effect but if the hardlimit is then raised (e.g. with a tool like edquota(8)), it may suddently start having effect. That's why I'm reluctant to just ignore or trim too large softlimit. Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR