summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2020-02-19 17:02:03 -0800
committerDarrick J. Wong <darrick.wong@oracle.com>2020-03-03 18:47:41 -0800
commit68455e0894c758bf76e835de9f4b12785cae913f (patch)
tree30146cd921c5f51496933cddc0ce160c09476035 /fs
parent7615d61167527d6c8243b7d8d8659b8afbe1dc8c (diff)
xfs: xfs_inode_free_quota_blocks should scan project quota
Buffered writers who have run out of quota reservation call xfs_inode_free_quota_blocks to try to free any space reservations that might reduce the quota usage. Unfortunately, the buffered write path treats "out of project quota" the same as "out of overall space" so this function has never supported scanning for space that might ease an "out of project quota" condition. We're about to start using this function for cases where we actually /can/ tell if we're out of project quota, so add in this functionality. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/xfs/xfs_icache.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
index c55fc0dfd457..d954e37af5d0 100644
--- a/fs/xfs/xfs_icache.c
+++ b/fs/xfs/xfs_icache.c
@@ -1566,6 +1566,15 @@ xfs_inode_free_quota_blocks(
}
}
+ if (XFS_IS_PQUOTA_ENFORCED(ip->i_mount)) {
+ dq = xfs_inode_dquot(ip, XFS_DQ_PROJ);
+ if (dq && xfs_dquot_lowsp(dq)) {
+ eofb.eof_prid = ip->i_d.di_projid;
+ eofb.eof_flags |= XFS_EOF_FLAGS_PRID;
+ do_work = true;
+ }
+ }
+
if (!do_work)
return false;