Re: [PATCH 03/11] xfs: xfs_inode_free_quota_blocks should scan project quota

Brian Foster
2021-01-25T18:16:35Z

On Sat, Jan 23, 2021 at 10:52:16AM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> 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@kernel.org>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> ---

Reviewed-by: Brian Foster <bfoster@redhat.com>

> 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;
>
>