Re: [PATCH] ext4: report sub-block project quotas in statfs
From: Jan Kara
Date: Mon Nov 02 2026 - 18:02:52 EST
On Sun 01-11-26 12:58:47, Hungyu Lin wrote:
> ext4_statfs_project() converts the selected space limit from bytes to
> filesystem blocks before checking whether it is nonzero. A nonzero quota
> smaller than one block therefore skips the project space adjustments.
>
> For example, a valid 1 KiB hard limit on a 4 KiB-block filesystem leaves
> statvfs() and df reporting the underlying filesystem's space, even when
> unprivileged data allocation fails with EDQUOT.
>
> Test the byte limit before converting it to filesystem blocks. The
> resulting zero block limit then clamps the project space statistics to
> zero. Keep the existing rounding and the rule that a zero byte limit
> means no quota.
>
> Fixes: 689c958cbe6b ("ext4: add project quota support")
> Signed-off-by: Hungyu Lin <dennylin0707@xxxxxxxxx>
Looks good. Feel free to add:
Reviewed-by: Jan Kara <jack@xxxxxxx>
Honza
> ---
> fs/ext4/super.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 9cae52471dee..91c1a54730f6 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -7001,11 +7001,11 @@ static int ext4_statfs_project(struct super_block *sb,
>
> limit = min_not_zero(dquot->dq_dqb.dqb_bsoftlimit,
> dquot->dq_dqb.dqb_bhardlimit);
> - limit >>= sb->s_blocksize_bits;
>
> if (limit) {
> uint64_t remaining = 0;
>
> + limit >>= sb->s_blocksize_bits;
> curblock = (dquot->dq_dqb.dqb_curspace +
> dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits;
> if (limit > curblock)
> --
> 2.43.0
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR