On Sat, Jan 23, 2021 at 10:52:16AM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > 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 <djwong@xxxxxxxxxx> > Reviewed-by: Christoph Hellwig <hch@xxxxxx> > --- Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > fs/xfs/xfs_icache.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > > diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c > index 89f9e692fde7..10c1a0dee17d 100644 > --- a/fs/xfs/xfs_icache.c > +++ b/fs/xfs/xfs_icache.c > @@ -1434,6 +1434,15 @@ xfs_inode_free_quota_blocks( > } > } > > + if (XFS_IS_PQUOTA_ENFORCED(ip->i_mount)) { > + dq = xfs_inode_dquot(ip, XFS_DQTYPE_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; > >