From: Darrick J. Wong <djwong@xxxxxxxxxx> Previously, we stated that files in the metadata directory tree are not counted in the dquot information. Fix the offline quotacheck code in xfs_repair and xfs_check to reflect this. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- db/check.c | 4 ++++ repair/quotacheck.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/db/check.c b/db/check.c index ae527471161..190565074b6 100644 --- a/db/check.c +++ b/db/check.c @@ -3018,6 +3018,10 @@ process_inode( default: break; } + /* Metadata directory files are not counted in quotas. */ + if (dip->di_version >= 3 && + (dip->di_flags2 & cpu_to_be64(XFS_DIFLAG2_METADIR))) + ic = 0; if (ic) quota_add(&prid, &gid, &uid, 0, bc, ic, rc); } diff --git a/repair/quotacheck.c b/repair/quotacheck.c index 4cb38db3ddd..3abcd8ae9a0 100644 --- a/repair/quotacheck.c +++ b/repair/quotacheck.c @@ -217,6 +217,10 @@ quotacheck_adjust( return; } + /* Metadata directory files aren't counted in quota. */ + if (xfs_is_metadir_inode(ip)) + goto out_rele; + /* Count the file's blocks. */ if (XFS_IS_REALTIME_INODE(ip)) rtblks = qc_count_rtblocks(ip); @@ -229,6 +233,7 @@ quotacheck_adjust( if (proj_dquots) qc_adjust(proj_dquots, ip->i_projid, blocks, rtblks); +out_rele: libxfs_irele(ip); }