Re: [PATCH 4.19 062/114] f2fs: choose hardlimit when softlimit is larger than hardlimit in f2fs_statfs_project()

Greg Kroah-Hartman
2020-01-04T11:53:14Z

On Sat, Jan 04, 2020 at 09:50:43AM +0800, Chengguang Xu wrote:
> ---- 在 星期六, 2020-01-04 01:12:13 Pavel Machek <pavel@denx.de> 撰写 ----
> > Hi!
> >
> > > From: Chengguang Xu <cgxu519@mykernel.net>
> > >
> > > [ Upstream commit 909110c060f22e65756659ec6fa957ae75777e00 ]
> > >
> > > 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).
> >
> > > Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
> > > Reviewed-by: Chao Yu <yuchao0@huawei.com>
> > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > > Signed-off-by: Sasha Levin <sashal@kernel.org>
> > > ---
> > > fs/f2fs/super.c | 20 ++++++++++++++------
> > > 1 file changed, 14 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> > > index 7a9cc64f5ca3..662c7de58b99 100644
> > > --- a/fs/f2fs/super.c
> > > +++ b/fs/f2fs/super.c
> > > @@ -1148,9 +1148,13 @@ static int f2fs_statfs_project(struct super_block *sb,
> > > return PTR_ERR(dquot);
> > > spin_lock(&dquot->dq_dqb_lock);
> > >
> > > - limit = (dquot->dq_dqb.dqb_bsoftlimit ?
> > > - dquot->dq_dqb.dqb_bsoftlimit :
> > > - dquot->dq_dqb.dqb_bhardlimit) >> sb->s_blocksize_bits;
> > > + limit = 0;
> > > + if (dquot->dq_dqb.dqb_bsoftlimit)
> > > + limit = dquot->dq_dqb.dqb_bsoftlimit;
> > > + if (dquot->dq_dqb.dqb_bhardlimit &&
> > > + (!limit || dquot->dq_dqb.dqb_bhardlimit < limit))
> > > + limit = dquot->dq_dqb.dqb_bhardlimit;
> > > +
> > > if (limit && buf->f_blocks > limit) {
> >
> > >> blocksize disappeared here. That can't be right.
> >
> > Plus, is this just obfuscated way of saying
> >
> > limit = min_not_zero(dquot->dq_dqb.dqb_bsoftlimit, dquot->dq_dqb.dqb_bhardlimit)?
> >
>
> Please skip this patch from stable list, I'll send a revised patch to upstream.

This patch is already in Linus's tree, so you can't send a "revised"
version, only one that applies on top of this one :)

That being said, I'll go drop this from the stable queues, thanks.
Please let us know when the fixed patch is in Linus's tree and we will
be glad to take both of them.

greg k-h