Patch "dm flakey: error READ bios during the down_interval" has been added to the 4.7-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
dm flakey: error READ bios during the down_interval
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
dm-flakey-error-read-bios-during-the-down_interval.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
99f3c90d0d85708e7401a81ce3314e50bf7f2819Mon Sep 17 00:00:00 2001
From: Mike Snitzer <[email protected]>
Date: Fri, 29 Jul 2016 13:19:55 -0400
Subject: dm flakey: error READ bios during the down_interval
From: Mike Snitzer <[email protected]>
commit 99f3c90d0d85708e7401a81ce3314e50bf7f2819 upstream.
When the corrupt_bio_byte feature was introduced it caused READ bios to no longer be errored with -EIO during the down_interval. This had to do with the complexity of needing to submit READs if the corrupt_bio_byte feature was used.
Fix it so READ bios are properly errored with -EIO; doing so early in flakey_map() as long as there isn't a match for the corrupt_bio_byte feature.
--- drivers/md/dm-flakey.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-)
drivers/md/dm-flakey.c +15 -8
@@ -289,10 +289,16 @@ static int flakey_map(struct dm_target * pb->bio_submitted = true;/* -* Map reads as normal. +* Map reads as normal only if corrupt_bio_byte set. */ -if (bio_data_dir (bio) ==READ ) - goto map_bio; +if (bio_data_dir (bio) ==READ ) { +/* If flags were specified, only corrupt those that match. */ +if (fc->corrupt_bio_byte && (fc->corrupt_bio_rw ==READ ) && +all_corrupt_bio_flags_match (bio, fc)) + goto map_bio; +else +return -EIO ; + }/* * Drop writes?
@@ -330,12 +336,13 @@ static int flakey_end_io(struct dm_targe/* * Corrupt successful READs while in down state. -* If flags were specified, only corrupt those that match. */ -if (fc->corrupt_bio_byte && !error && pb->bio_submitted && - (bio_data_dir (bio) ==READ ) && (fc->corrupt_bio_rw ==READ ) && -all_corrupt_bio_flags_match (bio, fc)) -corrupt_bio_data (bio, fc); +if (!error && pb->bio_submitted && (bio_data_dir (bio) ==READ )) { +if (fc->corrupt_bio_byte) +corrupt_bio_data (bio, fc); +else +return -EIO ; + }return error; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/dm-set-dmf_suspended-_before_-clearing-dmf_noflush_suspending.patch queue-4.7/dm-flakey-error-read-bios-during-the-down_interval.patch queue-4.7/dm-verity-fec-fix-block-calculation.patch queue-4.7/dm-fix-second-blk_delay_queue-parameter-to-be-in-msec-units-not-jiffies.patch