[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20190301050009.GA8234@mit.edu>
Date: Fri, 1 Mar 2019 00:00:09 -0500
From: "Theodore Y. Ts'o" <tytso@....edu>
To: Eric Whitney <enwlinux@...il.com>
CC: <linux-ext4@...r.kernel.org>
Subject: Re: [PATCH] ext4: fix bigalloc cluster freeing when hole punching
under load
On Wed, Feb 27, 2019 at 05:02:04PM -0500, Eric Whitney wrote:
> Ext4 may not free clusters correctly when punching holes in bigalloc
> file systems under high load conditions. If it's not possible to
> extend and restart the journal in ext4_ext_rm_leaf() when preparing to
> remove blocks from a punched region, a retry of the entire punch
> operation is triggered in ext4_ext_remove_space(). This causes a
> partial cluster to be set to the first cluster in the extent found to
> the right of the punched region. However, if the punch operation
> prior to the retry had made enough progress to delete one or more
> extents and a partial cluster candidate for freeing had already been
> recorded, the retry would overwrite the partial cluster. The loss of
> this information makes it impossible to correctly free the original
> partial cluster in all cases.
>
> This bug can cause generic/476 to fail when run as part of
> xfstests-bld's bigalloc and bigalloc_1k test cases. The failure is
> reported when e2fsck detects bad iblocks counts greater than expected
> in units of whole clusters and also detects a number of negative block
> bitmap differences equal to the iblocks discrepancy in cluster units.
>
> Signed-off-by: Eric Whitney <enwlinux@...il.com>
Thanks, applied.
- Ted
Powered by blists - more mailing lists