xfs: check tp->t_dqinfo value instead of the XFS_TRANS_DQ_DIRTY flag
authorKaixu Xia <kaixuxia@tencent.com>
Fri, 4 Dec 2020 00:41:21 +0000 (16:41 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 9 Dec 2020 17:49:38 +0000 (09:49 -0800)
commit04a58620a17cb14fa20c6e536e03eb27f9af6bc9
tree96fe7cbc63d0a6a922de1971e98957b30dae5484
parenta9382fa9a9ffb136bb274cfaefe64b1ac5dbb867
xfs: check tp->t_dqinfo value instead of the XFS_TRANS_DQ_DIRTY flag

Nowadays the only things that the XFS_TRANS_DQ_DIRTY flag seems to do
are indicates the tp->t_dqinfo->dqs[XFS_QM_TRANS_{USR,GRP,PRJ}] values
changed and check in xfs_trans_apply_dquot_deltas() and the unreserve
variant xfs_trans_unreserve_and_mod_dquots(). Actually, we also can
use the tp->t_dqinfo value instead of the XFS_TRANS_DQ_DIRTY flag, that
is to say, we allocate the new tp->t_dqinfo only when the qtrx values
changed, so the tp->t_dqinfo value isn't NULL equals the XFS_TRANS_DQ_DIRTY
flag is set, we only need to check if tp->t_dqinfo == NULL in
xfs_trans_apply_dquot_deltas() and its unreserve variant to determine
whether lock all of the dquots and join them to the transaction.

Signed-off-by: Kaixu Xia <kaixuxia@tencent.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_shared.h
fs/xfs/xfs_inode.c
fs/xfs/xfs_trans_dquot.c