[dm-devel] kernel BUG at drivers/md/persistent-data/dm-space-map-disk.c:178

Eric Biggers ebiggers at kernel.org
Tue Jan 14 21:52:48 UTC 2020


On Tue, Jan 07, 2020 at 12:28:25PM +0000, Joe Thornber wrote:
> On Tue, Jan 07, 2020 at 10:46:27AM +0000, Joe Thornber wrote:
> > I'll get a patch to you later today.
> 
> Eric,
> 
> Patch below.  I've run it through a bunch of tests in the dm test suite.  But
> obviously I have never hit your issue.  Will do more testing today.
> 
> - Joe
> 
> 
> 
> Author: Joe Thornber <ejt at redhat.com>
> Date:   Tue Jan 7 11:58:42 2020 +0000
> 
>     [dm-thin, dm-cache] Fix bug in space-maps.
>     
>     The space-maps track the reference counts for disk blocks.  There are variants
>     for tracking metadata blocks, and data blocks.
>     
>     We implement transactionality by never touching blocks from the previous
>     transaction, so we can rollback in the event of a crash.
>     
>     When allocating a new block we need to ensure the block is free (has reference
>     count of 0) in both the current and previous transaction.  Prior to this patch we
>     were doing this by searching for a free block in the previous transaction, and
>     relying on a 'begin' counter to track where the last allocation in the current
>     transaction was.  This 'begin' field was not being updated in all code paths (eg,
>     increment of a data block reference count due to breaking sharing of a neighbour
>     block in the same btree leaf).
>     
>     This patch keeps the 'begin' field, but now it's just a hint to speed up the search.
>     Instead we search the current transaction for a free block, and then double check
>     it's free in the old transaction.  Much simpler.
> 

I happened to notice this patch is on the linux-dm/for-next branch
(https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=for-next&id=2137c0dcc04b24efb4c38d4b46b7194575718dd5)
and it has:

	Reported-by: Eric Biggers <ebiggers at google.com>

This is wrong, I didn't report this.  I think you meant to put:

	Reported-by: Eric Wheeler <dm-devel at lists.ewheeler.net>

- Eric (the other one)





More information about the dm-devel mailing list