On Thu, Aug 22, 2024 at 05:05:01PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > Files in the metadata directory tree are internal to the filesystem. > Don't count the inodes or the blocks they use in the root dquot because > users do not need to know about their resource usage. This will also > quiet down complaints about dquot usage not matching du output. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > fs/xfs/xfs_dquot.c | 1 + > fs/xfs/xfs_qm.c | 11 +++++++++++ > fs/xfs/xfs_quota.h | 5 +++++ > fs/xfs/xfs_trans_dquot.c | 6 ++++++ > 4 files changed, 23 insertions(+) > > > diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c > index c1b211c260a9d..3bf47458c517a 100644 > --- a/fs/xfs/xfs_dquot.c > +++ b/fs/xfs/xfs_dquot.c > @@ -983,6 +983,7 @@ xfs_qm_dqget_inode( > > xfs_assert_ilocked(ip, XFS_ILOCK_EXCL); > ASSERT(xfs_inode_dquot(ip, type) == NULL); > + ASSERT(!xfs_is_metadir_inode(ip)); > > id = xfs_qm_id_for_quotatype(ip, type); > > diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c > index d0674d84af3ec..ec983cca9adae 100644 > --- a/fs/xfs/xfs_qm.c > +++ b/fs/xfs/xfs_qm.c > @@ -304,6 +304,8 @@ xfs_qm_need_dqattach( > return false; > if (xfs_is_quota_inode(&mp->m_sb, ip->i_ino)) > return false; > + if (xfs_is_metadir_inode(ip)) > + return false; > return true; > } > > @@ -326,6 +328,7 @@ xfs_qm_dqattach_locked( > return 0; > > xfs_assert_ilocked(ip, XFS_ILOCK_EXCL); > + ASSERT(!xfs_is_metadir_inode(ip)); > > if (XFS_IS_UQUOTA_ON(mp) && !ip->i_udquot) { > error = xfs_qm_dqattach_one(ip, XFS_DQTYPE_USER, > @@ -1204,6 +1207,10 @@ xfs_qm_dqusage_adjust( > } > } > > + /* Metadata directory files are not accounted to user-visible quotas. */ > + if (xfs_is_metadir_inode(ip)) > + goto error0; > + Hmmmm. I'm starting to think that xfs_iget() should not return metadata inodes unless a new XFS_IGET_METAINODE flag is set. That would replace all these post xfs_iget() checks with a single check in xfs_iget(), and then xfs_trans_metafile_iget() is the only place that sets this specific flag. That means stuff like VFS lookups, bulkstat, quotacheck, and filehandle lookups will never return metadata inodes and we don't need to add special checks all over for them... -Dave. -- Dave Chinner david@xxxxxxxxxxxxx