Files
linux/drivers/md
Joe Thornber 501d3fc1d9 dm thin: fix passdown_double_checking_shared_status()
commit d445bd9cec upstream.

Commit 00a0ea33b4 ("dm thin: do not queue freed thin mapping for next
stage processing") changed process_prepared_discard_passdown_pt1() to
increment all the blocks being discarded until after the passdown had
completed to avoid them being prematurely reused.

IO issued to a thin device that breaks sharing with a snapshot, followed
by a discard issued to snapshot(s) that previously shared the block(s),
results in passdown_double_checking_shared_status() being called to
iterate through the blocks double checking their reference count is zero
and issuing the passdown if so.  So a side effect of commit 00a0ea33b4
is passdown_double_checking_shared_status() was broken.

Fix this by checking if the block reference count is greater than 1.
Also, rename dm_pool_block_is_used() to dm_pool_block_is_shared().

Fixes: 00a0ea33b4 ("dm thin: do not queue freed thin mapping for next stage processing")
Cc: stable@vger.kernel.org # 4.9+
Reported-by: ryan.p.norwood@gmail.com
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-05-15 11:10:19 +09:00
..
2014-01-14 23:23:03 -05:00
2017-01-31 13:55:27 -08:00
2017-01-31 10:45:54 -08:00
2016-06-07 13:41:38 -06:00
2016-08-07 14:41:02 -06:00
2017-01-31 13:55:27 -08:00
2007-10-20 02:01:26 +01:00
2017-04-12 12:57:51 +02:00
2016-08-07 14:41:02 -06:00
2016-01-20 13:52:20 -08:00
2017-10-21 17:21:35 +02:00
2016-09-21 09:09:44 -07:00
2016-08-07 14:41:02 -06:00
2016-08-07 14:41:02 -06:00
2015-08-13 12:31:57 -06:00