All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: Mike Snitzer <snitzer@redhat.com>
Cc: LVM2 development <lvm-devel@redhat.com>,
	markus.schade@gmail.com, ejt@redhat.com,
	linux-block@vger.kernel.org, dm-devel@redhat.com,
	joe.thornber@gmail.com, dm-devel@lists.ewheeler.net
Subject: Re: kernel BUG at drivers/md/persistent-data/dm-space-map-disk.c:178
Date: Tue, 14 Jan 2020 13:52:48 -0800	[thread overview]
Message-ID: <20200114215248.GK41220@gmail.com> (raw)
In-Reply-To: <20200107122825.qr7o5d6dpwa6kv62@reti>

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@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@google.com>

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

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

- Eric (the other one)

WARNING: multiple messages have this Message-ID (diff)
From: Eric Biggers <ebiggers@kernel.org>
To: lvm-devel@redhat.com
Subject: kernel BUG at drivers/md/persistent-data/dm-space-map-disk.c:178
Date: Tue, 14 Jan 2020 13:52:48 -0800	[thread overview]
Message-ID: <20200114215248.GK41220@gmail.com> (raw)
In-Reply-To: <20200107122825.qr7o5d6dpwa6kv62@reti>

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@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@google.com>

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

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

- Eric (the other one)




  parent reply	other threads:[~2020-01-14 21:52 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-25 18:40 kernel BUG at drivers/md/persistent-data/dm-space-map-disk.c:178 with scsi_mod.use_blk_mq=y Eric Wheeler
2019-09-25 18:40 ` Eric Wheeler
2019-09-25 18:40 ` Eric Wheeler
2019-09-25 20:01 ` Mike Snitzer
2019-09-25 20:01   ` Mike Snitzer
2019-09-25 20:01   ` Mike Snitzer
2019-09-25 20:33   ` Eric Wheeler
2019-09-25 20:33     ` Eric Wheeler
2019-09-25 20:33     ` Eric Wheeler
2019-09-26 18:27   ` Eric Wheeler
2019-09-26 18:27     ` Eric Wheeler
2019-09-26 18:27     ` Eric Wheeler
2019-09-27  8:32     ` Joe Thornber
2019-09-27  8:32       ` Joe Thornber
2019-09-27  8:32       ` Joe Thornber
2019-09-27 18:45       ` Eric Wheeler
2019-09-27 18:45         ` Eric Wheeler
2019-09-27 18:45         ` Eric Wheeler
2019-12-20 19:54 ` [dm-devel] " Eric Wheeler
2019-12-20 19:54   ` Eric Wheeler
2019-12-20 19:54   ` Eric Wheeler
2019-12-27  1:47   ` [dm-devel] kernel BUG at drivers/md/persistent-data/dm-space-map-disk.c:178 Eric Wheeler
2019-12-27  1:47     ` Eric Wheeler
2019-12-27  1:47     ` Eric Wheeler
2019-12-28  2:13     ` Eric Wheeler
2019-12-28  2:13       ` Eric Wheeler
2019-12-28  2:13       ` Eric Wheeler
2020-01-07 10:35       ` Joe Thornber
2020-01-07 10:35         ` Joe Thornber
2020-01-07 10:35         ` [lvm-devel] " Joe Thornber
2020-01-07 10:46         ` Joe Thornber
2020-01-07 10:46           ` Joe Thornber
2020-01-07 10:46           ` [lvm-devel] " Joe Thornber
2020-01-07 12:28           ` [lvm-devel] " Joe Thornber
2020-01-07 12:28             ` [dm-devel] " Joe Thornber
2020-01-07 12:28             ` [dm-devel] [lvm-devel] " Joe Thornber
2020-01-07 18:47             ` [dm-devel] " Eric Wheeler
2020-01-07 18:47               ` Eric Wheeler
2020-01-07 18:47               ` [dm-devel] [lvm-devel] " Eric Wheeler
2020-01-14 21:52             ` Eric Biggers [this message]
2020-01-14 21:52               ` Eric Biggers
2020-01-15  1:22               ` Mike Snitzer
2020-01-15  1:22                 ` Mike Snitzer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200114215248.GK41220@gmail.com \
    --to=ebiggers@kernel.org \
    --cc=dm-devel@lists.ewheeler.net \
    --cc=dm-devel@redhat.com \
    --cc=ejt@redhat.com \
    --cc=joe.thornber@gmail.com \
    --cc=linux-block@vger.kernel.org \
    --cc=lvm-devel@redhat.com \
    --cc=markus.schade@gmail.com \
    --cc=snitzer@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.