Message ID | 1602130749-23093-4-git-send-email-kaixuxia@tencent.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xfs: random fixes for disk quota | expand |
On Thu, Oct 08, 2020 at 12:19:09PM +0800, xiakaixu1987@gmail.com wrote: > From: Kaixu Xia <kaixuxia@tencent.com> > > The xfs_trans_mod_dquot() function will allocate new tp->t_dqinfo if it is > NULL and make the changes in the tp->t_dqinfo->dqs[XFS_QM_TRANS_{USR,GRP,PRJ}]. > Nowadays seems none of the callers want to join the dquots to the > transaction and push them to device when the delta is zero. Actually, > most of time the caller would check the delta and go on only when the > delta value is not zero, so we should bail out when it is zero. > > Signed-off-by: Kaixu Xia <kaixuxia@tencent.com> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> > --- > fs/xfs/xfs_trans_dquot.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c > index 0ebfd7930382..3e37501791bf 100644 > --- a/fs/xfs/xfs_trans_dquot.c > +++ b/fs/xfs/xfs_trans_dquot.c > @@ -194,6 +194,9 @@ xfs_trans_mod_dquot( > ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); > qtrx = NULL; > > + if (!delta) > + return; > + Note that the calls in xfs_trans_dqresv() also check for delta != 0, so that could be removed with this patch. That aside: Reviewed-by: Brian Foster <bfoster@redhat.com> > if (tp->t_dqinfo == NULL) > xfs_trans_alloc_dqinfo(tp); > /* > @@ -205,10 +208,8 @@ xfs_trans_mod_dquot( > if (qtrx->qt_dquot == NULL) > qtrx->qt_dquot = dqp; > > - if (delta) { > - trace_xfs_trans_mod_dquot_before(qtrx); > - trace_xfs_trans_mod_dquot(tp, dqp, field, delta); > - } > + trace_xfs_trans_mod_dquot_before(qtrx); > + trace_xfs_trans_mod_dquot(tp, dqp, field, delta); > > switch (field) { > /* regular disk blk reservation */ > @@ -261,8 +262,7 @@ xfs_trans_mod_dquot( > ASSERT(0); > } > > - if (delta) > - trace_xfs_trans_mod_dquot_after(qtrx); > + trace_xfs_trans_mod_dquot_after(qtrx); > } > > > -- > 2.20.0 >
On 2020/10/9 19:32, Brian Foster wrote: > On Thu, Oct 08, 2020 at 12:19:09PM +0800, xiakaixu1987@gmail.com wrote: >> From: Kaixu Xia <kaixuxia@tencent.com> >> >> The xfs_trans_mod_dquot() function will allocate new tp->t_dqinfo if it is >> NULL and make the changes in the tp->t_dqinfo->dqs[XFS_QM_TRANS_{USR,GRP,PRJ}]. >> Nowadays seems none of the callers want to join the dquots to the >> transaction and push them to device when the delta is zero. Actually, >> most of time the caller would check the delta and go on only when the >> delta value is not zero, so we should bail out when it is zero. >> >> Signed-off-by: Kaixu Xia <kaixuxia@tencent.com> >> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> >> --- >> fs/xfs/xfs_trans_dquot.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c >> index 0ebfd7930382..3e37501791bf 100644 >> --- a/fs/xfs/xfs_trans_dquot.c >> +++ b/fs/xfs/xfs_trans_dquot.c >> @@ -194,6 +194,9 @@ xfs_trans_mod_dquot( >> ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); >> qtrx = NULL; >> >> + if (!delta) >> + return; >> + > > Note that the calls in xfs_trans_dqresv() also check for delta != 0, so > that could be removed with this patch. That aside: Yeah, I'll do that in the next version. Thanks, Kaixu > > Reviewed-by: Brian Foster <bfoster@redhat.com> > >> if (tp->t_dqinfo == NULL) >> xfs_trans_alloc_dqinfo(tp); >> /* >> @@ -205,10 +208,8 @@ xfs_trans_mod_dquot( >> if (qtrx->qt_dquot == NULL) >> qtrx->qt_dquot = dqp; >> >> - if (delta) { >> - trace_xfs_trans_mod_dquot_before(qtrx); >> - trace_xfs_trans_mod_dquot(tp, dqp, field, delta); >> - } >> + trace_xfs_trans_mod_dquot_before(qtrx); >> + trace_xfs_trans_mod_dquot(tp, dqp, field, delta); >> >> switch (field) { >> /* regular disk blk reservation */ >> @@ -261,8 +262,7 @@ xfs_trans_mod_dquot( >> ASSERT(0); >> } >> >> - if (delta) >> - trace_xfs_trans_mod_dquot_after(qtrx); >> + trace_xfs_trans_mod_dquot_after(qtrx); >> } >> >> >> -- >> 2.20.0 >> >
diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index 0ebfd7930382..3e37501791bf 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c @@ -194,6 +194,9 @@ xfs_trans_mod_dquot( ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); qtrx = NULL; + if (!delta) + return; + if (tp->t_dqinfo == NULL) xfs_trans_alloc_dqinfo(tp); /* @@ -205,10 +208,8 @@ xfs_trans_mod_dquot( if (qtrx->qt_dquot == NULL) qtrx->qt_dquot = dqp; - if (delta) { - trace_xfs_trans_mod_dquot_before(qtrx); - trace_xfs_trans_mod_dquot(tp, dqp, field, delta); - } + trace_xfs_trans_mod_dquot_before(qtrx); + trace_xfs_trans_mod_dquot(tp, dqp, field, delta); switch (field) { /* regular disk blk reservation */ @@ -261,8 +262,7 @@ xfs_trans_mod_dquot( ASSERT(0); } - if (delta) - trace_xfs_trans_mod_dquot_after(qtrx); + trace_xfs_trans_mod_dquot_after(qtrx); }