Re: [PATCH] ext4: deaccount delayed allocations at freeing inode in ext4_evict_inode()
From: Theodore Y. Ts'o
Date: Thu Nov 14 2019 - 19:27:21 EST
> From ee27836b579d3bf750d45cd7081d3433ea6fedd5 Mon Sep 17 00:00:00 2001
> From: Jan Kara <jack@xxxxxxx>
> Date: Fri, 8 Nov 2019 12:45:11 +0100
> Subject: [PATCH] ext4: Fix leak of quota reservations
>
> Commit 8fcc3a580651 ("ext4: rework reserved cluster accounting when
> invalidating pages") moved freeing of delayed allocation reservations
> from dirty page invalidation time to time when we evict corresponding
> status extent from extent status tree. For inodes which don't have any
> blocks allocated this may actually happen only in ext4_clear_blocks()
> which is after we've dropped references to quota structures from the
> inode. Thus reservation of quota leaked. Fix the problem by clearing
> quota information from the inode only after evicting extent status tree
> in ext4_clear_inode().
>
> Reported-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx>
> Fixes: 8fcc3a580651 ("ext4: rework reserved cluster accounting when invalidating pages")
> Signed-off-by: Jan Kara <jack@xxxxxxx>
OK, I've applied this patch.
- Ted